【问题标题】:UIRefreshControl not showing in landscape when in a navigation controller with large titles在具有大标题的导航控制器中,UIRefreshControl 不显示为横向
【发布时间】:2018-07-10 16:29:35
【问题描述】:

我有一个简单的UITableViewController 嵌入在一个喜欢大标题UINavigationController 中。我在表格视图控制器中添加了一个刷新控件。

在 iOS 11 的 iPhone 上,如果我以纵向模式启动我的应用,切换到横向并开始刷新表格视图,刷新控件不会显示。刷新发生,但控件不存在。它甚至不在视图层次结构中:

请注意,如果我处于纵向模式,同样的确实可以在 iPhone 上工作,在 iPad 上也可以在任何方向上工作。 它也适用于 iOS 10,适用于所有设备和每个方向,如果我禁用大标题,也适用于 iOS 11,因此它显然与大标题有关。

这是 iOS 10 上相同内容的屏幕截图:

I made a sample project for this. 不涉及任何代码,这是 Interface Builder 中的整个设置:

当我尝试使用带有嵌入式UITableViewUIScrollView 的简单UIViewController 时,也会发生同样的事情。

我很确定这是一个错误。如何使刷新控件在 iPhone 上横向可见?

【问题讨论】:

  • 无法从您的示例项目中重现。当我下拉时,我看到了横向的刷新控件。
  • @matt 你在什么操作系统和设备上试用过?
  • 好的,等等,我现在明白了:它在横向上不起作用如果你先在纵向上这样做。
  • 我会说这是一个错误。如果您关闭 Prefers Large Titles 一切都很好。我玩过其他一些设置,但没有效果。请将此报告给 Apple。
  • @matt 谢谢,这是我错过的一个重要细节。我将编辑我的问题。

标签: ios iphone uinavigationcontroller ios11 uirefreshcontrol


【解决方案1】:

我们通过在每次旋转时重新创建刷新控件来解决此问题。它也在 viewDidLoad() 中调用。

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
    super.traitCollectionDidChange(previousTraitCollection)

    if traitCollection.verticalSizeClass != previousTraitCollection?.verticalSizeClass {
        tableView.refreshControl = UIRefreshControl() // !!!
        tableView.refreshControl.addTarget(self, action: #selector(didPullToRefresh), for: .valueChanged)
    }
}

@objc func didPullToRefresh() {
    DispatchQueue.main.asyncAfter(deadline: .now() + 1) { [weak self] in
        tableView.refreshControl.endRefreshing()
    }
    // ...
}

【讨论】:

  • 如果这个解决方法有效,它应该是接受的答案,而不是我的答案!
  • 此解决方法似乎存在问题。如果在刷新过程中将设备从横向模式旋转到纵向模式,则似乎会弄乱 collectionView 布局。它在 collectionView 的顶部留下了很大的空隙。我想tableView也会发生同样的情况
【解决方案2】:

这可以清楚地描述为一个错误。它很容易复制。您的描述似乎很正确;一旦您以纵向显示刷新控件,然后旋转为横向,刷新控件甚至不在横向界面中(如果您给它一个背景颜色,这很容易看到)。

然而,总的来说,这并不令人惊讶。与大标题相关的错误很多;苹果显然没有仔细考虑过这个功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    相关资源
    最近更新 更多