带有 UIRefreshControl 的 ScrollView 在显示为模式表时不会刷新

Posted

技术标签:

【中文标题】带有 UIRefreshControl 的 ScrollView 在显示为模式表时不会刷新【英文标题】:ScrollView with a UIRefreshControl won't refresh when presented as a modal sheet 【发布时间】:2019-09-28 01:35:44 【问题描述】:

ios 13 模态演示文稿表 (UIPresentationController) 和 UIScrollView 的 (UITableView/UICollectionView) 与 UIRefreshControl 相处得不好。

是否可以拖动超出 TableView 的顶部以触发刷新控件而不是关闭呈现的视图?是否有任何干净的解决方案,而不是使用预设的 UIGestureRecognizer's?

isModalInPresentation 设置为false 不起作用。

【问题讨论】:

【参考方案1】:

看看 UIAdaptivePresentationControllerDelegate 还有一些来自 Apple 的示例代码https://developer.apple.com/videos/play/wwdc2019/224/“禁用下拉工作表”可能会有所帮助。

【讨论】:

与我目前拥有的结果相同,而不是继续在 ScrollView 内滚动,它只是拉下呈现的视图控制器。 ok 看起来像是你试图提供的一种奇怪的交互,一旦你呈现了一个模态,我认为不支持与呈现视图的交互,因此是“模态” 我正在尝试使用 uirefreshcontrol 刷新集合视图,对我来说这听起来不像是一种奇怪的交互 在模态显示的视图中? (只是想理解 ;-)) 对!只想使用默认的 iOS 13 工作表呈现一个视图控制器,并拥有一个可以使用 refreshcontrol 更新的 collectionview【参考方案2】:

尝试使用下面的代码呈现viewController 并检查它。

let vc = UIViewController()
vc.modalPresentationStyle = .fullScreen 
self.present(vc, animated: true, completion: nil)

【讨论】:

【参考方案3】:

使用

scrollView.refreshControl = refreshControl

而不是

scrollView.addSubview(refreshControl)

【讨论】:

以上是关于带有 UIRefreshControl 的 ScrollView 在显示为模式表时不会刷新的主要内容,如果未能解决你的问题,请参考以下文章

UITableView - 带有背景图像的 UIRefreshControl

Swift Firebase:带有 .childAdded 的 UIRefreshControl

UIRefreshControl 在带有大标题的 UINavigation 后面呈现

UIRefreshControl 未在 iOS 10 以下显示带有 DialogViewController 的 Xamarin

拉动刷新后,带有 UiRefreshControl 的 Tableview 卡住了

带有 UIRefreshControl 的 ScrollView 在显示为模式表时不会刷新