在iOS 11上,导航项目中的搜索栏会在导航d出时折叠并卡在状态栏下

在iOS 11上,导航项目中的搜索栏会在导航d出时折叠并卡在状态栏下,第1张

概述我正在使用UINavigationItem的新iOS 11 searchContoller属性.我正在运行iOS 11.0 GM build. 当我在搜索控制器处于活动状态时执行push segue时,它可以正常工作.当我随后d回时,搜索栏将折叠并在状态栏中压缩.我无法取消搜索,或编辑搜索文本. 请参阅以下图像序列: 最终图像显示在pop segue期间表格的出现,以便从呈现的视图控制器返回到具有 我正在使用UINavigationItem的新iOS 11 searchContoller属性.我正在运行iOS 11.0 GM build.

当我在搜索控制器处于活动状态时执行push segue时,它可以正常工作.当我随后d回时,搜索栏将折叠并在状态栏中压缩.我无法取消搜索,或编辑搜索文本.

请参阅以下图像序列:

@L_301_3@

最终图像显示在pop segue期间表格的出现,以便从呈现的视图控制器返回到具有搜索栏的表格.奇怪的是,这并不总是发生.它发生在90%的时间,但有时它表现得很好.我还没有弄清楚我在做什么,以使其发挥作用.一旦搜索栏被压扁,我必须强制关闭应用程序以恢复合理的状态.

设置搜索控制器的代码非常标准. vIEwDIDLoad()的相关位如下:

searchController = UISearchController(searchResultsController: nil)searchController.dimsBackgroundDuringPresentation = falsesearchController.searchbar.returnKeyType = .donesearchController.searchbar.placeholder = "Your library"searchController.searchbar.searchbarStyle = .minimal// We will manage the clearing of selections ourselves.cleaRSSelectionOnVIEwWillAppear = false// Some search bar styles are slightly different on iOS 11if #available(iOS 11.0,*) {    navigationItem.searchController = searchController    navigationController!.navigationbar.prefersLargeTitles = true}else {    searchController.searchbar.backgroundcolor = tableVIEw.backgroundcolor!    searchController.hIDesNavigationbarDuringPresentation = false    tableVIEw.tableheaderVIEw = searchController.searchbar    tableVIEw.setContentOffset(CGPoint(x: 0,y: searchController.searchbar.frame.height),animated: false)}

我也注意到Apple的Messages应用程序中的这个问题(见下面的截图),以及Settings,Notes和Mail,所以这可能是iOS 11的错误.

只有在设置中使用小于默认文本大小时才会出现这种情况 – >一般 – >辅助功能 – >较大的文本,似乎只发生在物理设备上(没有在模拟器中重现).在vIEwDIDAppear中,searchController.searchbar.frame.height等于0(但不在vIEwDIDdisappear中,而不是vIEwWillAppear).到目前为止我唯一的解决方法是:

overrIDe func vIEwDIDAppear(_ animated: Bool) {    if #available(iOS 11.0,*),searchController.searchbar.frame.height == 0 {        navigationItem.searchController?.isActive = false    }    super.vIEwDIDAppear(animated)}

有没有更好的方法来解决这个问题?

解决方法 这个BUG可以在iOS 11.1中重现:

- (voID)vIEwDIDLoad {    [super vIEwDIDLoad];    self.navigationItem.hIDesSearchbarWhenScrolling = NO;}- (voID)vIEwDIDAppear:(BOol)animated {    [super vIEwDIDAppear:animated];    if (@available(iOS 11.0,*)) {        self.navigationItem.hIDesSearchbarWhenScrolling = YES;    }}

在VC生命周期事件上避免mutate navigationItem,修复了我的问题

总结

以上是内存溢出为你收集整理的在iOS 11上,导航项目中的搜索栏会在导航d出时折叠并卡在状态栏下全部内容,希望文章能够帮你解决在iOS 11上,导航项目中的搜索栏会在导航d出时折叠并卡在状态栏下所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1001399.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存