ユーザーが「キャンセル」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にscrollViewを移動するために使用しているUITextFieldです。これは、次の2つの方法で設定されます。
- (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;
}