如何触发 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 中的取消按钮?的主要内容,如果未能解决你的问题,请参考以下文章
UIToolbar 中的 UISearchBar 不会显示取消按钮
UINavigationController 中的 UISearchBar,取消按钮不可选
如何在iOS 7中更改文本UISearchBar的取消按钮颜色?