iOS 13 UISearchController + UIRefreshControl 故障
Posted
技术标签:
【中文标题】iOS 13 UISearchController + UIRefreshControl 故障【英文标题】:iOS 13 UISearchController + UIRefreshControl glitch 【发布时间】:2019-09-11 11:35:08 【问题描述】:我使用UISearchController
在UITableViewController
中进行搜索,该UITableViewController
还支持通过UIRefreshControl
进行拉取刷新。
在简化的 Demo 项目中设置非常简单
override func viewDidLoad()
extendedLayoutIncludesOpaqueBars = true
title = searchTerm ?? "Search"
super.viewDidLoad()
setupSearch()
setupRefresh()
private func setupSearch()
searchController.searchResultsUpdater = self
navigationItem.searchController = searchController
definesPresentationContext = true
//
// If this is set to `true` (which is also the default),
// UISearchBar and UIRefreshcontroll are buggy
//
navigationItem.hidesSearchBarWhenScrolling = true
private func setupRefresh()
refreshControl = UIRefreshControl()
refreshControl?.addTarget(self, action: #selector(refresh), for: .valueChanged)
这在 ios 12 中有效,但现在在 iOS 13(使用 Xcode 11 GM 为 iOS 13 编译)中,刷新动画已损坏
到目前为止,我发现的唯一“修复”是将navigationItem.hidesSearchBarWhenScrolling
设置为false
,但这显然会导致搜索栏始终停留在屏幕上,即使在滚动时也是如此。
这是一个演示该问题的示例项目:https://github.com/iv-mexx/UISearchControl-UIRefreshControl-iOS13-Bug/tree/feature/ios13
更新:这在 Xcode 11 GM Seed 2 中仍然存在问题
【问题讨论】:
【参考方案1】:如果您的应用可以选择启用大标题,那么这似乎也可以解决该问题。
这可能是 Apple 在自己的应用程序中没有遇到此问题的原因。
【讨论】:
不确定这是否是一个选项,但很高兴知道,谢谢以上是关于iOS 13 UISearchController + UIRefreshControl 故障的主要内容,如果未能解决你的问题,请参考以下文章
UISearchController 打开后,iOS 13 无法滚动到底部
使用 UISearchController 时,iOS 13 UIBarButtonItem 不可点击和重叠 UINavigationBars
在 iOS 13 中使用 UISearchController 时,状态栏在 iOS 中变为白色
自 IOS 13 以来,UISearchController 在状态栏中意外绘制 UITableView