我有一个表格视图,其标题显示UISegmentedControl
和UISearchBar
。请记住,我没有使用UISearchController
。当我搜索当前列表并切换不同的段时,我想取消搜索并使用新数据重新加载列表。
目前我手动清除搜索文本,为取消按钮设置动画并隐藏键盘。但我也是在searchBarCancelButtonClicked
方法中做到这一点。
有没有办法在仅使用UISearchBar时以编程方式取消搜索(清除文本,隐藏键盘和隐藏取消按钮)?
答案 0 :(得分:1)
不,没有办法自动清除文本字段,隐藏键盘等。即使它看起来像是常见的功能,也由每个开发人员决定如何实现它。当用户点击取消按钮时,Apple只能提供捕获事件的功能。
通常,我会在视图控制器中创建一个本地函数,如:
-(void)clearSearchBar:(UISearchBar *)searchBar {
searchBar.Text = @"";
[searchBar resignFirstResponder];
...
}
然后,在searchBarCancelButtonClicked:
中(假设您已为搜索栏创建了IBOutlet),您可以执行以下操作:
-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
[self clearSearchBar:self.searchBar];
}
然后,您还可以在需要清除它的任何其他地方拨打clearSearchBar:
。
显然,可以在这里使用类别来避免重复代码。
您也可以像这样致电searchBarCancelButtonClicked:
:
[self.searchBar.delegate searchBarCancelButtonClicked:self.searchBar];