在 iOS 11 上以编程方式滚动 UISearchController 的搜索栏不会消失
Posted
技术标签:
【中文标题】在 iOS 11 上以编程方式滚动 UISearchController 的搜索栏不会消失【英文标题】:Programmatically scrolling on iOS 11 with UISearchController's search bar not disappearing 【发布时间】:2017-12-11 17:34:24 【问题描述】:在 ios 11 上,搜索栏能够/建议使用 navigationItem.searchController = searchController
附加到导航控制器,动画 contentOffset
更改似乎有点错误,因为搜索栏似乎经常保持原位。之后立即滚动修复它,但它很难看。
如果您通过点击状态栏一直滚动到顶部(使搜索栏可见),然后在UIScrollView
上为contentOffset
更改设置动画,您会看到搜索栏有时会出现,特别是在设备而不是模拟器上(但您仍然可以在模拟器上看到导航栏太高):
即使是 Xcode 的一个模板项目,例如“Master Detail”,也可以很容易地观察到这一点,方法是添加一个搜索控制器,然后添加一个按钮来跳转。
@objc func goBackUp(_ sender: Any)
tableView.setContentOffset(CGPoint(x: 0.0, y: 1200), animated: true)
这是一个示例项目,显示:Sample Project
我知道这很可能是一个 iOS 错误,因为在 iOS 10 及更早版本上没有问题,但在此期间有人知道修复吗?
【问题讨论】:
【参考方案1】:iOS 11 中的 navigationItem 上有一个新的 searchController 属性。
https://developer.apple.com/documentation/uikit/uinavigationitem/2897305-searchcontroller
在 iOS 11 上,如果您不设置 navigationItem.hidesSearchBarWhenScrolling = false,搜索栏最初可能会被隐藏,除非用户向下滚动以显示它。如果您确实将其设置为 false,则它会堆叠在标题所在的下方,而无需用户滚动。
【讨论】:
该属性只会影响滚动时它是否粘住。上面概述的问题是,当滚动并且它被设置为不粘时,它会。以上是关于在 iOS 11 上以编程方式滚动 UISearchController 的搜索栏不会消失的主要内容,如果未能解决你的问题,请参考以下文章
无法在 xCode 12 上以编程方式为较旧的 iOS 版本创建应用程序