[英]textFieldShouldReturn doesn't work (using storyboard on XCode 4)
我有一个按钮和一个文本字段。 我只是想在点击按钮时键盘消失。 为什么我的代码不起作用。
更新:我看到了文件所有者的一些事情。 我不明白如何在XCode4中执行此操作我使用故事板,我看不到任何文件所有者图标。
更新2:我发现了一个问题http://www.techotopia.com/index.php/Writing_iOS_4_Code_to_Hide_the_iPhone_Keyboard_%28Xcode_4%29但它在XCode 4上使用XIB文件而不是故事板。 如何用故事板做到这一点?
myViewController.h
@interface myViewController : UIViewController <UITextFieldDelegate>
{
UITextField *myTextField;
}
@property (retain, nonatomic) IBOutlet UITextField *myTextField;
myViewController.m
- (BOOL)textFieldShouldReturn: (UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
- (void)viewDidLoad
{
[super viewDidLoad];
myTextField.delegate = self;
}
- (IBAction)DoCalc:(id)sender {
// ...
}
检查你写入myViewController.m的textFieldShouldReturn函数是否被调用。 在其中设置断点,然后运行模拟器。 按键盘上的返回键。 如果程序没有中断,则不会调用您编写的函数。
如果是,那是因为您没有将UIResponder职责委托给您的视图控制器。 确保您将响应者职责委派给您正在使用的UITextField的myViewController类。
在storyboard中,您可以通过控制从UITextField小部件拖动到场景下方的黄色圆球,然后从显示的上下文菜单中选择“委托”来完成此操作。
textFieldShouldReturn:
应该返回NO以隐藏键盘。 还有一件事 - 不要将第一响应者设置为self
, [textField resignFirstResponder]
就足够了,iOS应该自己计算nextResponder
。
你可以在这个方法中隐藏keybord ......
- (void)textFieldDidEndEditing:(UITextField *)textField {
[textField resignFirstResponder];
}
删除[self becomeFirstResponder];
应该这样做。
resignFirstResponder
是解雇键盘。 而becomeFirstResponder
则是打开键盘。 所以在你的代码中,你正在关闭然后再次打开键盘。 最后一个动作是打开键盘,因此它不会关闭。
您可以将UIResponder类视为UITextField
超类
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.