检测 UISearchController 何时出现在 iOS 11 的导航项中
Posted
技术标签:
【中文标题】检测 UISearchController 何时出现在 iOS 11 的导航项中【英文标题】:Detecting when UISearchController Appears in Navigation Item in iOS 11 【发布时间】:2018-01-03 03:52:16 【问题描述】:我正在将 UISearchController 实现为 ios 11 中导航项的一部分。这通常可以正常工作。但我需要知道 searchBar 何时通过滚动自动显示或隐藏。 UISearchController 或 UISearchBar 中的委托方法都没有提供此信息。 UISearchController 中的 isActive 属性仅在 searchBar 获得焦点(第一响应者)时为 true。
我发现的唯一方法是在高度 searchBar 框架上使用 KVO,但这样的接缝相当极端。
与我的要求相关的还有以编程方式隐藏搜索栏的能力(就像用户向上滚动一样)。我发现这样做的唯一方法是将导航项的 UISearchController 属性设置为 nil,但这似乎也相当极端。
谢谢。
【问题讨论】:
【参考方案1】:最简单的方法是在单元格顶部的滚动视图(表格视图)内添加searchBar
:
您可以使用偏移值来识别显示或隐藏的搜索栏。这不是完美的方法,但它有助于满足您的需求。
【讨论】:
但我认为这不会将其集成到导航栏中,对吧?所以,我会放弃 iOS 11 的一项不错的功能。我希望在导航项目中使用时能够检测到它(如我的问题标题所述)。 抱歉,您没有使用 TableView 选项将 searchBar 集成到导航栏中。 TableView 选项基本上是显示搜索栏的旧样式。此外,检查偏移量与检查框架高度没有太大区别。但我非常感谢您的意见。 感谢您的评论,但考虑到您的问题,没有这样的委托方法可以在显示/隐藏搜索栏时直接告诉您。所以我刚刚给了你另一种方法来做到这一点。因为我不知道导航栏的优先级。 您可以为您的问题设置赏金。您可能会得到多个答案,这可能会帮助您做到这一点。以上是关于检测 UISearchController 何时出现在 iOS 11 的导航项中的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Swift 检测 iOS 应用程序何时出现在前台? [复制]
UISearchController 使 UITableView 的内容变黑