2017-11-14 9 views
0

データのフィルタリングを支援するために、単純なテキスト入力が必要です。理想的には私はUISearchBarへの強い参照を保持したいのですが、ユーザーが「検索」をタップすると、この検索バーでしょうbecomeFirstResponder()と私はUISearchBarを独自の.inputAccessoryViewにできますか?

self.searchBar.inputAccessoryView = self.searchBar

を設定しますしかし、それはしていないようです作業。 .searchBarは一般的にView Controllerのビュー階層にはなく、キーボードに接続したいと考えています。

それ以外の場合は別のアプローチを考えます。最終的には、私は編集中に見ることができるテキスト入力をしようとしています、そして、それはツールバーに添付されるべきです。理想的には.inputAccessoryViewを使用するので、キーボード通知/アニメーションを気にする必要はありません。

これが可能なら誰でも知っていますか?

答えて

0

私が正しく理解している場合は、キーボードをトリガーするため、およびユーザーが入力した検索語句を表示するために検索バーを使用したいが、常に検索バーを画面に表示したいが、 「検索」ボタンをクリックします。

単一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と同様に働くべきだと思います。

+0

ありがとうございます。私は自分のソリューションを調理することができますが、もちろん、何に関わらず、ユーザーはロングプレス(テキスト編集?)を使うことはできません。とにかく、別のアプローチを取っています。私が疑うものを確認していただきありがとうございます。 – horseshoe7

関連する問題