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

5
我正在进行一个iOS项目,想要实现搜索功能。我使用了UISearchBarUISearchDisplayController,并希望将UISearchBar隐式隐藏。当用户点击UIBarButtonItem时,搜索栏将会出现并成为第一响应者,而当用户点击搜索栏中的Cancel按钮时,它应该消失。
出现的部分已经正确实现,但是我在消失方面遇到了问题。我设法在用户点击Cancel按钮(searchBarCancelButtonClicked方法)时隐藏搜索栏,但是我无法在UISearchDisplayController中灰色(变暗)背景被点击时隐藏搜索栏。据我所知,没有方法来检测这个事件,因此需要应用一些技巧。你是否知道任何方法,或者检测灰色背景上点击的最佳方式是什么?
2个回答

5

我终于明白了。除了searchBarCancelButtonClicked:(UISearchBar *)searchBar之外,在searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller中隐藏搜索栏也是必要的。看起来当灰色(变暗)背景被点击时,这个回调函数会被调用,所以可以很容易地用来隐藏搜索栏。


您真是个天才! - Lukas

0

UISearchDisplayController通常由UISegmentedControl、UIResultsTable和键盘组成。结果表是您想要检测的触摸以进行解除。既然知道了这一点,也许您可以向该视图添加一个透明的UIButton,以解除第一个响应者,或者您可以在透明视图上添加UIGestureRecognizer,实现相同的效果?只是从头开始思考,我自己还没有尝试过,如果对您有用,我很高兴!


我认为UIResultsTable不是我要找的东西。只有在输入搜索栏之后才会显示结果表格。在此之前,那里没有UITableView,只有一个灰色背景。 - zvonicek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接