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

我有一个表头,显示一个UISegmentedControl和一个UISearchBar 。 请记住,我没有使用UISearchController 。 当我搜索了当前列表并且切换了另一个段时,我想要取消搜索并使用新数据重新加载列表。

目前,我正在手动清除搜索文本,动画取消按钮并隐藏键盘。 但我也在searchBarCancelButtonClicked方法中执行此searchBarCancelButtonClicked

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


不,无法自动清除文本字段,隐藏键盘等。尽管看起来像通用功能,但每个开发人员都可以决定如何实现它。 当用户点击取消按钮时,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];
链接地址: http://www.djcxy.com/p/44247.html

上一篇: How to trigger the "cancel search" when using only a UISearchBar?

下一篇: Enable cancel button with UISearchBar in iOS8