ios - 具有低高度 UICollectionView 的 UIRefreshControl

标签 ios swift uicollectionview uirefreshcontrol

我有一个 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

看看这个屏幕截图以供引用: enter image description here

如您所见,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/

相关文章:

ios - Facebook shareLinkContent 的深层链接

Swift:从 Firebase 数据库检索数据以进行标签

iOS 模拟器不显示完整的应用程序

ios - 重用单元格 UICollectionView - 一些单元格没有被选中

Swift 4 - 从类 'NSObject' 和 'UICollectionViewFlowLayout' 多重继承

swift - UICollectionView 单元格间距相等

ios - Interface Builder 文件中的未知类 XXXXX

ios - 在 iOS 中添加到主屏幕时,HTML5 网络应用程序不缓存

ios - 无法设置完成 block swift 2.0 w/SDWebImageCompletionBlock

ios - 有没有办法用数组构造一个 Firestore 字段(同名)并显示 TableView 中每个字段的每个数组元素