48

如何以编程方式触发 UISearchBar 中的取消按钮,就像您点击了取消按钮一样?

我在 UITableView 的顶部有一个 UISearchBar,搜索后,当有人选择一行时,我想以编程方式触发 UISearchBar 中的取消按钮?

编辑:没有用户交互。

4

6 回答 6

67

对于使用搜索显示控制器的视图控制器,您可以设置

self.searchDisplayController.active = NO;
// or:
[self.searchDisplayController setActive:NO animated:YES];

关闭搜索界面。

于 2013-04-11T20:42:21.000 回答
30

对于新的UISearchController(2014 年与 iOS 8 一起推出),您可以调用:

[self.searchController setActive:FALSE];

或者

self.searchController.active = FALSE;

(没有动画标志,我发现它总是动画。)

于 2015-02-02T01:32:26.633 回答
29

您需要实施UISearchBarDelegate. 完成后,使用:

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar

告诉代理点击了取消按钮。

然后使用:

[self searchBarCancelButtonClicked:yourSearchBar];
于 2013-04-11T20:34:14.197 回答
5

至于iOS 8,UISearchController是用的,以编程方式实现取消按钮动作,使用:

[self.searchController setActive:NO]; 
于 2015-10-22T12:08:51.490 回答
4

对于 Swift 4.2 版本,您可以编写如下代码:

searchController?.isActive = false
于 2018-11-02T13:00:37.900 回答
0
self.navigationItem.searchController?.isActive = false // above iOS 8.0
// or:    
self.searchDisplayController.active = NO; // was deprecated in iOS 8.0
// or:
[self.searchDisplayController setActive:NO animated:YES]; // Obejective-C

这些是完成上述任务的一些变体

于 2021-02-19T06:30:17.433 回答