【问题标题】:iOS 13 UISearchController + UIRefreshControl glitchiOS 13 UISearchController + UIRefreshControl 故障
【发布时间】:2019-09-11 11:35:08
【问题描述】:

我使用UISearchControllerUITableViewController 中进行搜索,该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 中仍然存在问题

【问题讨论】:

    标签: ios uitableview uisearchcontroller uirefreshcontrol ios13


    【解决方案1】:

    如果您的应用可以选择启用大标题,那么这似乎也可以解决该问题。

    这可能是 Apple 在自己的应用程序中没有遇到此问题的原因。

    【讨论】:

    • 不确定这是否是一个选项,但很高兴知道,谢谢
    猜你喜欢
    • 2018-04-23
    • 1970-01-01
    • 2023-03-18
    • 2020-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    相关资源
    最近更新 更多