我正在尝试为iPhone实现一个hello world应用程序,我已经完成了一些工作。但是我无法弄清楚如何让键盘消失。我见过this并且它没有帮助(我的代码中有resignFirstResponder)。我已将相关文本字段作为代理连接到文件所有者。以下是确定键盘是否应该消失的代码:
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
if (theTextField == textField)
{
[textField resignFirstResponder];
}
return YES;
}
我确信这应该是显而易见的,但我找不到答案。在此先感谢您的帮助!
答案 0 :(得分:4)
首先,只是为了澄清:您应该将文本字段的委托连接到文件的所有者,而不是文件所有者对文本字段的委托。这可能听起来令人困惑,但您可以通过在Interface Builder中选择文本字段并检查其“委托”连接点是否为文件所有者来轻松检查。
接下来,如果您在代码中取出if
语句会发生什么?将文本字段的委托链接到文件的所有者,然后将代码更改为:
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
[theTextField resignFirstResponder];
return YES;
}
应该产生预期的结果。
如果它仍然不起作用,请检查文件的所有者的类是否与您实现该方法的类相同。例如,如果代码在RootViewController.m中,那么您要指定该文件的owner是Interface Builder中RootViewController的一个实例。
答案 1 :(得分:0)
你的代码
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
if (theTextField == textField)
{
[textField resignFirstResponder];
}
return YES;
}
有点失败。
您没有将resignFirstResponder调用委托方法的参数,而是将其调用为我假设的实例变量。这应该写成如下:
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
if (theTextField == [self textField]) {
[theTextField resignFirstResponder];
}
return YES;
}