当我在iPhone上按“完成”时键盘不会消失
我正在尝试为iPhone实现一个Hello World应用程序,并且我已经完成了一些操作。但我无法弄清楚如何让键盘消失。我见过this,没有帮助(我的代码中有resignFirstResponder)。我已将相关文本字段作为代表连接到文件的所有者。这是确定键盘是否应该消失的代码:当我在iPhone上按“完成”时键盘不会消失
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
if (theTextField == textField)
{
[textField resignFirstResponder];
}
return YES;
}
我确信这应该是显而易见的,但我找不到答案。在此先感谢您的帮助!
首先,为了澄清:您应该将文本字段的委托连接到文件的所有者,而不是文件所有者的委托给文本字段。这可能听起来令人困惑,但您可以通过在Interface Builder中选择文本字段并检查其“委托”连接指向文件所有者来轻松检查。
接下来,如果您在代码中取出if
语句,会发生什么情况?将文本字段的代理链接到文件的所有者,然后将代码更改为:
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
[theTextField resignFirstResponder];
return YES;
}
应产生期望的结果。
如果它仍然不起作用,请检查该文件的所有者类是否与实现该方法的类相同。例如,如果代码位于RootViewController.m中,那么您要指定文件的所有者是Interface Builder中RootViewController的一个实例。
代码
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
if (theTextField == textField)
{
[textField resignFirstResponder];
}
return YES;
}
是有点失败。
您没有将resignFirstResponder调用到委托方法的参数中,而是将其称为我所假设的实例变量。这应该写成如下:
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
if (theTextField == [self textField]) {
[theTextField resignFirstResponder];
}
return YES;
}
当然,要使用我提供的代码,textField必须是属性。实际上,你不应该与实例变量进行沟通。这是属性的用途。属性提供了一个很好的,快乐的,由内存管理的封装,可以让你使用实例变量来做事情。 – 2009-07-20 08:35:47
我想我不清楚委托是的,我有它按照你指定的有线。出于某种原因,删除if语句很好地解决了问题。谢谢! – RCIX 2009-07-11 08:50:04