【问题标题】:Swift 4 - UIRefreshControl on vertical UICollectionView lagsSwift 4 - 垂直 UICollectionView 上的 UIRefreshControl 滞后
【发布时间】:2018-11-12 12:06:33
【问题描述】:

出于某种原因,我的拉动刷新真的很难完成。我的意思是,为了拉动刷新,我必须从我的收藏视图的最顶部开始并向下滚动到最底部......有时我什至必须用第二根手指才能滚动更多以使其工作!

这是我初始化刷新器的方法:

private var refresher: UIRefreshControl!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.

    refresher = UIRefreshControl()

    refresher.addTarget(self, action: #selector(self.requestRefreshContent), for: .valueChanged)

    if #available(iOS 10.0, *) {
        schoolPostsCollectionView.refreshControl = refresher
    }
    else {
        schoolPostsCollectionView.addSubview(refresher)
    }

    refresher.beginRefreshing()
}

我是这样称呼beginRefreshing()的:

private func getContentOfSchool() {
    someBackgroundServerCall() {
        // some code

        ...

        DispatchQueue.main.async {
            self.refresher.endRefreshing()
            self.schoolPostsCollectionView.reloadData()
        }
    }
}

知道为什么会这样吗?

【问题讨论】:

  • 从未完全刷新是什么意思?函数requestRefreshContent 没有被调用吗?您是否在代码中的任何位置调用 refreshed.endRefreshing()
  • 检查我更新的问题。是的,我有时会打电话给refresher.endRefreshing()...
  • 为什么要在 Collectionview 中添加子视图。
  • @S.D 因为它是这样工作的......
  • @SotirisKaniras 显示完整代码...

标签: swift uirefreshcontrol


【解决方案1】:

试试这个....

refresher = UIRefreshControl()
    refresher.attributedTitle = NSAttributedString(string: "Refreshing...", attributes: nil)
    refresher.tintColor = UIColor.black
    refresher.addTarget(self, action: #selector(self.requestRefreshContent), for: .valueChanged)

    if #available(iOS 10.0, *) {
        schoolPostsCollectionView.refreshControl = refresher
    } else {
        schoolPostsCollectionView.backgroundView = refresher
    }

【讨论】:

    猜你喜欢
    • 2019-01-07
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多