私はUIScrollViewの中にテキストフィールドがあり、ユーザーが編集を開始するときにクリアボタンを表示したい。また、ユーザーがUIScrollview(テキストフィールドではない)の背景をタップするときにキーボードを非表示にする必要があります。そのクリアボタンを表示することは問題ではないが、クリアボタンがタップされるとキーボードが隠れてしまい、テキストフィールドがクリアされないという問題がある。クリアボタンがクリックされたとき(ただし、テキストフィールドがタップされているときには起動されません)、これを処理するメソッドが起動されるため、明らかにジェスチャ認識機能が問題になります。ここに私のコード:UITextfieldのクリアボタンは、キーボードが内部にあるときにキーボードを隠す。
//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;
}
どのようにこれを解決するためのアイデア?ジェスチャー認識機能を追加する方が良いでしょうか?私は同じ問題を抱えていたし、次のメソッドを実装し、それを解決... ...ないエレガントなソリューションの
カントは来週までテストしますが、これは解決策のようです...ありがとうございます! :) –
あなたはそれを試しましたか?それは動作しましたか?もしそうなら、この回答を受け入れてください。 – Thompsonian
私はカスタムUIButtonサブクラスをページにも持っていましたので、私はそれをisKindOfClassにしました:[UIButtonクラス] –