【问题标题】:UIRefreshControl with low height UICollectionView具有低高度 UICollectionView 的 UIRefreshControl
【发布时间】:2016-04-21 11:13:15
【问题描述】:

我有一个视图,其中包含顶部的另一个视图,我用它来显示一些基本信息。它大约占总视图高度的 40%。在该“标题”视图下方,我使用的是可滚动的 UICollectionView。现在我在我的 UICollectionView 中添加了一个 UIRefreshControl,但是刷新永远不会发生,因为用户无法将 UICollectionView 下拉那么远。当我降低顶视图的高度时,它开始工作,因为那时有足够的空间将 collectionview 拉下来。

这是我添加 refreshControl 的方式:

    self.matchDetailRefreshControl = UIRefreshControl()
    self.matchDetailRefreshControl.addTarget(self, action: #selector(MatchDetailViewController.fetchAll), forControlEvents: .ValueChanged)
    self.collectionView!.addSubview(self.matchDetailRefreshControl)
    self.collectionView!.alwaysBounceVertical = true

查看此屏幕截图以供参考:

如您所见,UIRefreshControl 没有完全填满,而我的手指已经在屏幕底部。

我该如何解决这个问题?

【问题讨论】:

标签: ios swift uicollectionview uirefreshcontrol


【解决方案1】:

你可以实现scrollViewDidScroll。 如果 scrollView 的 contentOffset 超过了某个点,则使用 beginRefreshing() 以编程方式实现刷新

例如(刷新控件连接到名为“refreshControl”的插座)

func scrollViewDidScroll(scrollView: UIScrollView) {

    let currentOffset = scrollView.contentOffset

    let yOffset = currentOffset.y

    if yOffset < -30.0 && !refreshControl.refreshing {
        refreshControl.beginRefreshing()
    }
}

如果你还没有设置滚动视图的委托,请不要忘记将其设置为 self

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

【讨论】:

  • 多么简单……我没想到。谢谢!
  • 没问题!我很高兴能帮上忙:)
  • 你应该调用refreshControl.sendActionsForControlEvents:UIControlEventValueChanged来实际调用刷新方法。
猜你喜欢
  • 1970-01-01
  • 2013-10-29
  • 2013-06-20
  • 2013-01-18
  • 2021-05-18
  • 2019-10-22
  • 1970-01-01
  • 2020-03-08
  • 2020-02-02
相关资源
最近更新 更多