我有一个 View ,其中顶部包含另一个 View ,我用它来显示一些基本信息。它大约占总 View 高度的40%。在“标题” View 下方,我使用可滚动的 UICollectionView。现在我已将 UIRefreshControl 添加到 UICollectionView 中,但刷新永远不会发生,因为用户无法将 UICollectionView 下拉那么远。当我减小顶 View 的高度时,它开始工作,因为有足够的空间可以将 CollectionView 拉下来。
以下是我添加刷新控件的方法:
self.matchDetailRefreshControl = UIRefreshControl()
self.matchDetailRefreshControl.addTarget(self, action: #selector(MatchDetailViewController.fetchAll), forControlEvents: .ValueChanged)
self.collectionView!.addSubview(self.matchDetailRefreshControl)
self.collectionView!.alwaysBounceVertical = true
如您所见,UIRefreshControl 并未完全填充,而我的手指已经位于屏幕底部。
我该如何解决这个问题?
最佳答案
您可以实现scrollViewDidScroll。 如果 ScrollView 的 contentOffset 超过某个点,则使用 beginRefreshing() 以编程方式实现刷新
例如(刷新控件连接到名为“refreshControl”的 socket )
func scrollViewDidScroll(scrollView: UIScrollView) {
let currentOffset = scrollView.contentOffset
let yOffset = currentOffset.y
if yOffset < -30.0 && !refreshControl.refreshing {
refreshControl.beginRefreshing()
}
}
如果您还没有设置 ScrollView 的委托(delegate),请不要忘记将其设置为 self
编辑:抱歉,是 beginRefreshing(),而不是 startRefreshing()。
关于ios - 具有低高度 UICollectionView 的 UIRefreshControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36767876/