我有一个普通的UITableViewController
嵌入一个UINavigationController
which 喜欢大标题。我向表视图控制器添加了刷新控件。
在 iOS 11 中的 iPhone 上,如果我以纵向模式启动应用程序,切换到横向模式并开始刷新表格视图,刷新控件不显示。刷新发生,但控件不存在。它甚至不在视图层次结构中:
注意,同样does如果我处于纵向模式,则可以在 iPhone 上工作;如果处于纵向模式,则可以在 iPad 上工作。它也适用于 iOS 10每个设备和每个方向也适用于 iOS 11如果我禁用大标题,那么它显然与大标题有关。
这是 iOS 10 上相同内容的屏幕截图:
我为此做了一个示例项目。 https://github.com/tamassengel/DisappearingRefreshControl不涉及任何代码,以下是 Interface Builder 中的整个设置:
当我尝试使用简单的方法时,也会发生同样的事情UIViewController
带有嵌入式UITableView
or UIScrollView
.
我很确定这是一个错误。如何使刷新控件在横向 iPhone 上可见?
我们通过在每次旋转时重新创建刷新控件来修复此问题。它也在 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()
}
// ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)