私が正しく理解している場合は、キーボードをトリガーするため、およびユーザーが入力した検索語句を表示するために検索バーを使用したいが、常に検索バーを画面に表示したいが、 「検索」ボタンをクリックします。
単一UISearchBar
では不可能ですが、あなたはちょうどそれらのうちの2つを使用することができます。
- あなたのビューコントローラへのサブビューとして1を追加し、(BAR1)それを隠す、と
inputAccessoryView
ように、第2の使用(BAR2 );両方の検索バーの代理人になる必要があります。
- ユーザーが "検索"ボタンを押すと、bar1が最初のレスポンダになり、デリゲートプロトコルでイベントを処理し、それに応じてbar2を更新します。
- を
shouldChangeTextIn
デリゲートメソッドでブロックして、ユーザーがbar2にテキストを直接入力しないようにします。 bar2で受け取った の他のイベントは、あなたにとって理にかなっているbar1に転送できます。
あなたが始めるのは、ここで(例えばviewDidLoad
に行くだろう)基本的なセットアップのためのいくつかのコードは次のとおりです。
self.dummySearchBar = UISearchBar()
dummySearchBar.isHidden = true
dummySearchBar.delegate = self
self.visibleSearchBar = UISearchBar()
visibleSearchBar.delegate = self
dummySearchBar.inputAccessoryView = visibleSearchBar
続いて、「検索」ボタンハンドラで、添付してキーボードを聞かせて検索バーは、次のように表示されます。
dummySearchBar.becomeFirstResponder()
注:私はこのプロジェクトで同様のセットアップを持っていますが、簡単にするために、私は代わりにUISearchBar
秒のUITextField
秒を使用します。まだ、私は基本的なアプローチはUISearchBar
と同様に働くべきだと思います。
ありがとうございます。私は自分のソリューションを調理することができますが、もちろん、何に関わらず、ユーザーはロングプレス(テキスト編集?)を使うことはできません。とにかく、別のアプローチを取っています。私が疑うものを確認していただきありがとうございます。 – horseshoe7