UIRefreshControl具有低高度UICollectionView

我有一个视图,其中包含顶部的另一个视图,我用它来显示一些基本信息。 它占总视图高度的约40%。 在“标题”视图下方,我正在使用可滚动的UICollectionView。 现在我已经在我的UICollectionView中添加了一个UIRefreshControl,但是从不会发生刷新,因为用户无法向下拉UICollectionView。 当我减小顶视图的高度时,它开始工作,因为有足够的空间来拉下集合视图。

这是我添加refreshControl的方式:

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’的sockets)

 func scrollViewDidScroll(scrollView: UIScrollView) { let currentOffset = scrollView.contentOffset let yOffset = currentOffset.y if yOffset < -30.0 && !refreshControl.refreshing { refreshControl.beginRefreshing() } } 

如果您还没有忘记将scrollView的委托设置为self

编辑:抱歉,它是beginRefreshing(),而不是startRefreshing()。