UISearchBar を入力アクセサリ ビューとして使用して、キーボードと一緒に存在をアニメーション化できるようにしようとしています。私の最初の解決策は、
- UISearchBar を拡張し、UIResponder から inputAccessoryView プロパティを実装する新しいクラス MySearchBar を作成します。
- ビュー コントローラーで、mySearchBar という名前の新しい MySearchBar インスタンスを作成し、その inputAccessoryView をそれ自体に設定します(これにより循環参照が作成されますが、それを解除するコードがあります)。
- 検索バーを表示するたびに、まずそれをコントローラーのビューに追加し、その becomeFirstResponser メソッドを呼び出します。
- キーボードが表示された後、[[mySearchBar inputAccessoryView] becomeFirstResponser] を呼び出します。
これは、iOS 4.3 を搭載した iPhone 4 で非常にうまく機能します。ただし、iPhone 5.0 シミュレーターでは、検索バーをタップした後にのみキーボードが表示されません (下の画像を参照)。
次に、2 番目の解決策を試します。
- UITextField を拡張する MyTextField という名前の新しいクラスを作成します。実装では、UISearchBar を作成し、それを MyTextField の入力アクセサリ ビューとして使用します。
- ビュー コントローラー クラスで、ダミーの MyTextField をビュー階層に追加します。
- 検索バーを表示するたびに、[myTextField becomeFirstResponser] を呼び出すだけです。
- キーボードが表示された後、[[myTextField inputAccessoryView] becomeFirstResponser] を呼び出します。
このソリューションを使用すると、キーボードの表示に問題はなく、入力アクセサリ ビュー (検索バー) に集中できますが、検索バーがフォーカスされているときはテキストを入力できません。
何が問題なのか知っている人はいますか?ありがとう!