5

私は検索機能を実装したいiOSプロジェクトに取り組んでいます。 UISearchBarUISearchDisplayControllerを使用しており、UISearchBarを暗黙的に非表示にしたいと考えています。ユーザーがUIBarButtonItemをタップすると、検索バーが表示され、 "becomeFirstResponder"が表示されます。ユーザーが検索バーのCancelボタンをクリックすると、ユーザーは消えます。UISearchDisplayControllerの灰色(淡色)背景のタップを検出する方法

外観が正しく動作していますが、消えてしまう問題があります。ユーザーがCancelボタン(searchBarCancelButtonClickedメソッド)をタップしたときに検索バーを隠すことができましたが、UISearchDisplayControllerの灰色(淡色)の背景をタップすると検索バーを非表示にできません。私が知る限り、このイベントを検出する方法はありませんので、ハックを適用する必要があります。灰色の背景でタッピングを検出するには、何かを知っていますか?

答えて

5

だから私は最終的にそれを解決しました。 searchBarCancelButtonClicked:(UISearchBar *)searchBar以外にも、検索バーをsearchDisplayControllerDidEndSearch:(UISearchDisplayController *)controllerに非表示にする必要があります。このコールバックは、灰色(淡色)の背景がタップされている場合でも呼び出されるように見えるので、検索バーを隠すために簡単に使用できます。

+0

あなたは天才です! – pechar

0

UISearchDisplayControllerは、通常、UISegmentedControl、UIResultsTableおよびキーボードで構成されます。結果表は、このタッチを検出して却下する場所です。そのことが分かっていれば、最初のレスポンダを閉じるビューに透明なUIButtonを追加することもできますし、同じ効果を実現する透過ビューにUIGestureRecognizerを追加することもできます。あなたのためにうまくいけば、ちょうどトップを考えて、これを自分で試していない、私はうれしい!

+0

私はUIResultsTableが私が探しているものではないと思います。結果表は、検索バーに入力した後にのみ表示されます。これの前に、UITableViewはありません。灰色の背景だけです。 – zvonicek

関連する問題