【发布时间】:2012-07-10 12:31:53
【问题描述】:
UISearchDisplayController 有这个问题。我想在专用视图中使用它来处理搜索。对于我的控制器类,我使用了搜索栏、搜索控制器和表格视图控制器的组合。 SearchViewController 链接到.xib。
@interface SearchViewController : UIViewController <UISearchBarDelegate, UISearchDisplayDelegate, UITableViewDelegate, UITableViewDataSource> {
NSSet *words;
UISearchDisplayController *searchController;
UISearchBar *searchBar;
PhraseTableViewController *phraseTableViewController;
}
只要出现SearchViewController,搜索栏就会成为第一响应者,因此搜索处于活动状态。一切看起来和工作正常,有一个例外:
为了回到之前的视图,我想使用 SearchBar 的取消按钮。现在问题来了:如果用户在没有进行搜索的情况下触摸底层 tableview 的灰色区域,取消按钮(因此是返回的唯一方法)消失。
这是我试图解决的问题:
-
showsCancelButton = YESsearchDisplayControllerDidEndSearch。可以,但生成的 UI 丑得要命:取消按钮转出然后重新出现。 - 将
UITapGestureRecognizer添加到searchcontroller 的searchResultTableView中,希望能抓住机会。不起作用,它仍然可以通过。 - 子类
UISearchBar并覆盖self.searchController.searchBar setShowsCancelButton:- 不起作用。
如何解决这个问题的想法:
- 始终隐藏取消按钮,而是添加自定义按钮。问题:您知道如何做到这一点以使 UI 看起来不错吗?我最关心的是处理所有情况,以便搜索文本字段始终很好地保持在按钮的一侧。
- 放弃
UISearchDisplayController以获得更灵活的解决方案。你知道去哪里看吗?在 iOS 3 之前,这个控制器不存在,对吧?是否有解决方案仍然有效?
很高兴收到您的任何意见。提前致谢。
【问题讨论】:
-
你试过
showsCancelButton = YESsearchDisplayControllerWillEndSearch吗? -
是的,没有效果。隐藏取消按钮的事件必须在
willEndSearch和didEndSearch之间触发。
标签: ios cocoa-touch uikit uisearchdisplaycontroller