5

我正在开发一个想要实现搜索功能的 iOS 项目。我正在使用UISearchBar并且UISearchDisplayController我想UISearchBar隐式隐藏。当用户点击 时UIBarButtonItem,搜索栏会出现并“成为FirstResponder”,而当用户点击Cancel搜索栏中的按钮时,它应该会消失。

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

4

2 回答 2

5

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

于 2012-07-11T08:49:57.740 回答
0

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

于 2012-06-01T19:18:52.573 回答