UIScrollView 内にテキスト フィールドがあり、ユーザーが編集を開始したときにクリア ボタンを表示したいと考えています。また、ユーザーがUIScrollviewの背景をタップしたときにキーボードを非表示にする必要があります(テキストフィールドではありません)。そのクリア ボタンを表示することは問題ではありません。問題は、クリア ボタンをタップするとキーボードが非表示になり、テキスト フィールドがクリアされないことです。これを処理するメソッドは、クリア ボタンがクリックされたときに起動されるためです (ただし、テキスト フィールドがタップされたときには起動されません)。これが私のコードです:
//adding gesture recognizer so i can hide keyboard when user taps scrollview
- (void) textFieldDidBeginEditing:(UITextField *)textField
{
if (self.tapOutside == nil) self.tapOutside = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(textFieldTouchOutSide:)];
[self.scrollView addGestureRecognizer:self.tapOutside];
}
//This hides keyboard BUT IS ALSO CALLED WHEN CLEAR BUTTON IS TAPPED
- (void)textFieldTouchOutSide:(id)sender
{
[self.textfield resignFirstResponder];
}
//NEVER GETS CALLED
- (BOOL) textFieldShouldClear:(UITextField *)textField {
return YES;
}
これを解決する方法はありますか?ジェスチャ認識エンジンを追加するより良い方法でしょうか? エレガントな解決策は考えられません...よろしくお願いします...