Josh がこの質問で説明した方法を使用して、iPhone のキーボードの上部にツールバーを追加しています。基本的に、アイデアは次のとおりです。
- View Controller を通知のオブザーバーとして追加し
UIKeyboardWillShowNotification
、UIKeyboardWillHideNotification
その初期化メソッドに追加します - これらの通知が投稿されるたびに、キーボードと一緒にツールバーを画面に表示/非表示にアニメーション化します
画面には複数の UITextFields もあり、編集のために選択するとすべてがファーストレスポンダーになり、編集が完了するとファーストレスポンダーを辞任します (ユーザーが別のテキストフィールドをタップするか、任意のテキストフィールドから離れるか、キーボードの「完了」を押します)。 - にtextFieldShouldReturn:
オーバーライドしましたresignFirstResponder
)。
ただし、テキスト フィールドを切り替えるたびに通知が投稿されるため、問題が発生しています。たとえば、ユーザーがテキスト フィールド A の編集を終了し、テキスト フィールド B をタップした場合、A はファーストレスポンダーを辞任し、B はファーストレスポンダーになります。ただし、これにより、「表示される」通知と「非表示になる」通知の両方がView Controllerに投稿されます。
これらすべての最終結果は、ツールバーが最初のテキスト フィールドのキーボードで表示され、最後のテキスト フィールドのキーボードで非表示になる間、ユーザーがテキストを切り替えるたびにキーボードにスライドして戻ってくるように見えることです。田畑。
キーボードが実際に表示または非表示になる場合、「will {show,hide}」通知にのみ応答する方法はありますか? 別の言い方をすれば、キーボードの表示状態を変更しない通知を無視するにはどうすればよいですか?