(当面はiOS 2.0をターゲットにしています。)
UITextFieldをサブクラス化し、UITextFieldDelegateプロトコルを実装するクラスがあります。
最初は、クラスを独自のデリゲートとして設定していませんでした。フィールドをクリックすると、キーボードが自動的にポップアップしました。ここまでは順調ですね。
setReturnKeyType:メッセージをUIReturnKeyDoneで送信すると、右下のボタンが[完了]に変わります。
問題は、[完了]をクリックするか[戻る]を押しても何も起こらなかったことです。キーボードが消えませんでした。
編集終了通知のオブザーバーとして自分自身を追加しようとしましたが、[完了]をクリックしても呼び出されませんでした。グーグル検索から、フィールドがファーストレスポンダーとして辞任したときにのみ解雇されるようです-これは私が起こることができないビットです。
次に、ここで、デリゲートとして自分自身を追加し、textFieldShouldReturn:を処理することを提案する回答を見つけました。問題は、デリゲートとして自分自身を追加するとすぐに、フィールドをクリックしたときにキーボードがポップアップしなくなることです(そしてフォーカスが得られません)-それはファーストレスポンダーになっていないようです。
textFieldShouldBeginEditing:を処理してYESを返し(ドキュメントでは、オーバーライドしない場合はデフォルトにする必要があると記載されています)、呼び出されましたが、違いはありませんでした。私は知らないうちに[textFieldbecomeFirstResponder]を試し、スタックオーバーフローが発生しました(これは、ファーストレスポンダーになろうとしたことに応じて呼び出されることがわかりました)。
私は今完全に立ち往生しています!
誰か助けてもらえますか?ユーザーが[完了]をクリックするか[戻る]を押したときにキーボードが消えてほしいだけです。