防止 UISearchController 在第一次击键/字符时显示 searchResultsViewController

Posted

技术标签:

【中文标题】防止 UISearchController 在第一次击键/字符时显示 searchResultsViewController【英文标题】:Prevent UISearchController from displaying searchResultsViewController on first keystroke / character 【发布时间】:2015-10-08 22:27:11 【问题描述】:

我正在异步执行搜索,所以我只希望在用户按下“输入”后提交请求。

搜索界面如下所示:

但是,UISearchController 假定在第一次击键时就可以获得结果,并立即呈现searchResultsViewController(我自己的UITableView 子类):

这不是很好,因为用户会被一大堆空行分散注意力,并且不知道为什么要显示它。

在视图控制器上设置 hidden 似乎没有帮助。

我只想在我的结果返回后显示结果窗格。在此之前如何隐藏结果视图控制器?

【问题讨论】:

【参考方案1】:

UISearchControllerDelegate 有一个presentSearchController 方法,您可以实现该方法来自定义显示以延迟显示,直到结果可用。如果 UISearchController 没有一些未记录的要求,即在 presentSearchController 返回时必须显示结果控制器,这可能会起作用。

我使用的另一种方法是设置结果表,以便在您等待结果时显示一个特殊的“进行中”表格单元格。此单元格包含一个显示正在加载的内容的微调器。

【讨论】:

以上是关于防止 UISearchController 在第一次击键/字符时显示 searchResultsViewController的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 UISearchController 显示导航栏?

防止 UISearchController 在 IOS8 中隐藏视图导航栏

UISearchController:searchBar 和 scopeBar 在第一次触摸事件上重叠

UISearchController 需要额外点击才能成为第一响应者

UISearchController searchBar 框架仅在第一次点击时调整大小

Xamarin:UISearchController 没有成为第一响应者,并且在将其添加到导航栏时没有开始编辑