如何检测UISearchDisplayController中灰色(变暗)背景的点击

时间:2012-06-01 18:59:20

标签: iphone objective-c ios uisearchbar uisearchdisplaycontroller

我正在开发一个我希望实现搜索功能的iOS项目。我正在使用UISearchBarUISearchDisplayController,我想隐含隐藏UISearchBar。当用户点击UIBarButtonItem时,搜索栏会出现并显示“becomeFirstResponder”,而当用户点击搜索栏中的Cancel按钮时,它会消失。

出现正常,但我有消失的问题。当用户点击Cancel按钮(searchBarCancelButtonClicked方法)时,我设法隐藏了搜索栏,但是当UISearchDisplayController中的灰色(变暗)背景时,我无法隐藏搜索栏被窃听。据我所知,没有方法可以检测到这个事件,所以有必要应用一些hack。你知道吗,或者什么是检测灰色背景的最佳方法?

2 个答案:

答案 0 :(得分:5)

所以我终于解决了。除了searchBarCancelButtonClicked:(UISearchBar *)searchBar之外,还需要隐藏searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller中的搜索栏。它看起来即使在点击灰色(暗淡)背景时也会调用此回调,因此它可以很容易地用于隐藏搜索栏。

答案 1 :(得分:0)

UISearchDisplayController通常由UISegmentedControl,UIResultsTable和键盘组成。结果表是您要检测此触摸以解除的位置。知道了这一点,也许你可以在该视图中添加一个透明的UIButton来消除第一个响应者,或者也许你可以在透明视图上添加一个UIGestureRecognizer来实现相同的效果?只是想到顶部并且没有自己尝试过,如果它对你很有用,我很高兴!