我有一个普通的
UITableViewController
嵌入在UINavigationController
中,更喜欢大标题。我向表视图控制器添加了刷新控件。
在 iOS 11 中的 iPhone 上,如果我以纵向模式启动应用程序,切换到横向模式并开始刷新表格视图,刷新控件不会显示。刷新发生,但控件不存在。它甚至不在视图层次结构中:
请注意,如果我处于纵向模式,则同样的在 iPhone 上适用,并且在 iPad 上的各个方向上也适用。 它也适用于 iOS 10,适用于所有设备和每个方向,如果我禁用大标题,它也适用于 iOS 11,所以它显然与大标题有关。
这是 iOS 10 上相同内容的屏幕截图:这是 Interface Builder 中的整个设置:
当我尝试使用带有嵌入式
UIViewController
或
UITableView
的简单
UIScrollView
时,也会发生同样的事情。我很确定这是一个错误。如何使刷新控件在横向 iPhone 上可见?
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()
}
// ...
}
不过,总体而言,这并不令人意外。有很多与大标题相关的错误;苹果显然没有仔细考虑这个功能。