当用户按下“取消”UIBarButtonItem 时,我试图关闭键盘。但是,当我单击取消按钮时,我收到一个带有“无法识别的选择器发送到实例”错误的 SIGABRT。
我创建取消按钮的代码是:
- (void)keyboardWasShown:(NSNotification*)aNotification
{
//Add cancel button to navigation bar
UIBarButtonItem *dismissKeyboardBttn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(dismissKeyboard:)];
self.navigationItem.rightBarButtonItem = dismissKeyboardBttn;
}
要关闭键盘,我有这种方法:
- (void)dismissKeyboard:(id)sender
{
[activeField resignFirstResponder];
//^^This line causes the SIGABRT^^
}
这似乎很简单。有任何想法吗?
更新:activeField 只是我用来将我的滚动视图移动到用户当前正在编辑的 UITextField 的 UITextField。在这两种方法中设置:
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
activeField = textField;
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
activeField = nil;
}
更新 2:有趣的是,我已经注册了 ViewController 以接收键盘通知,当我尝试使用“textFieldShouldReturn”方法关闭键盘时,我得到了同样的错误。这是我的 textFieldShouldReturn 代码:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
if ([textField canResignFirstResponder])
{
[textField resignFirstResponder];
}
return YES;
}