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