如何触发 UISearchBar 中的取消按钮?

Posted

技术标签:

【中文标题】如何触发 UISearchBar 中的取消按钮?【英文标题】:How to trigger cancel button in UISearchBar? 【发布时间】:2013-04-11 20:19:35 【问题描述】:

如何在 UISearchBar 中以编程方式触发取消按钮,例如点击取消按钮?

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

编辑:无需用户交互。

【问题讨论】:

你有搜索显示控制器吗? 【参考方案1】:

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

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

关闭搜索界面。

【讨论】:

哎呀,谢谢!!有用!我只是不知道为什么我投了反对票,谢谢你的关注。【参考方案2】:

对于新的UISearchController(2014 年随 ios 8 推出),您可以致电:

[self.searchController setActive:FALSE];

self.searchController.active = FALSE;

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

【讨论】:

我试过上面的代码。它似乎在我找到的演示中工作,但似乎在我的代码中没有工作,你有什么想法吗?目前使用 self.searchDisplayController?.setActive(false, animated: true) 来关闭搜索控制器,但我担心它是一个已弃用的代码。 @vinbhai4u 你的小评论很难说。您应该提交一个新问题,在其中更详细地说明问题。 如果你不想要动画,你可以把它包装在一个 UIView.performWithoutAnimation 块中。【参考方案3】:

您需要实现UISearchBarDelegate。完成后,使用:

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar

告诉委托人点击了取消按钮。

然后使用:

[self searchBarCancelButtonClicked:yourSearchBar];

【讨论】:

不,我需要以编程方式进行。无需用户交互。 使用 Swift self.searchBarCancelButtonClicked(YourSearchBar)【参考方案4】:

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

[self.searchController setActive:NO]; 

【讨论】:

是的。这个确实触发了搜索取消搜索模式。在视图消失事件中,此调用对于在视图处于搜索模式时避免内存泄漏至关重要。否则,视图不会从内存中释放。【参考方案5】:

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

searchController?.isActive = false

【讨论】:

【参考方案6】:
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

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

【讨论】:

以上是关于如何触发 UISearchBar 中的取消按钮?的主要内容,如果未能解决你的问题,请参考以下文章

UISearchBar 取消按钮颜色?

UIToolbar 中的 UISearchBar 不会显示取消按钮

UINavigationController 中的 UISearchBar,取消按钮不可选

如何在iOS 7中更改文本UISearchBar的取消按钮颜色?

UISearchBar - 当点击取消按钮时,如何防止关闭 scopeBar?

如何在iOS7中更改UISearchBar的取消按钮的textColor?