私はこの問題を抱えていましたユーザーが画面上のどこか他の場所をタップしたときにキーボードを外していたとき。私はタップを探しているジェスチャー認識プログラムを持っていて、タップが検出されると、テキストフィールドのresignFirstResponderを呼び出します。残念ながら、それはクリアボタンを破ります。彼らは少し手動ボタンタップトリガすることによって、複雑、テーブルビューの外にあることを確認するためのタップをフィルタリングした私がやった
:グラハム・パークスの答えに続き
// In: - (void)handleTap:(UITapGestureRecognizer *)sender {
// The user tapped outside a text field, drop the keyboard.
// Unfortunately this normally breaks the clear button, so we'll check that the
// tap is outside the table view (and therefore not on a clear button).
BOOL inButton = CGRectContainsPoint(self.signInButton.bounds, [sender locationInView:self.signInButton]);
BOOL inTable = CGRectContainsPoint(self.tableView.bounds, [sender locationInView:self.tableView]);
if (!inTable && !inButton) {
BOOL didEndEditing = [self.view endEditing:NO];
// But... if we were editing a field (& therefore the keyboard is showing),
// and if they tapped the sign in button, sign in. Not sure where the
// onSignIn event is getting lost. The button does highlight. But the
// call to endEditing seems to eat it.
if (didEndEditing && inButton) {
[self onSignIn:self.signInButton];
}
}
textFieldのデリゲートは既にselfに設定されていますが、違いはありません。 – icecreamhead
UITextfieldデリゲートを変更するものを見つけて(それをselfに設定するものを除く)、コメントアウトします。その後、それが動作するかどうかを確認します。 NSLogはあなたの状況では難しいので、私はファイルに書き込む何かを使用します。 –