如何仅使用UISearchBar时触发“取消搜索”?

时间:2015-08-13 17:47:11

标签: ios uisearchbar

我有一个表格视图,其标题显示UISegmentedControlUISearchBar。请记住,我没有使用UISearchController。当我搜索当前列表并切换不同的段时,我想取消搜索并使用新数据重新加载列表。

目前我手动清除搜索文本,为取消按钮设置动画并隐藏键盘。但我也是在searchBarCancelButtonClicked方法中做到这一点。

有没有办法在仅使用UISearchBar时以编程方式取消搜索(清除文本,隐藏键盘和隐藏取消按钮)?

1 个答案:

答案 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];