UIRefreshControl with low height UICollectionView

好久不见. 提交于 2020-01-02 09:59:19

问题


I have a view which contains another view on the top part, which I'm using to show some basic information. It has about 40% of the total view height. Below that "header" view, I'm using a UICollectionView which is scrollable. Now I've added a UIRefreshControl to my UICollectionView, but refreshing does never occur, because the user can't pull down the UICollectionView that far. When I reduce the height of the top view, it starts working because there's enough space to pull the collectionview down then.

Here's how I'm adding the refreshControl:

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

Have a look at this screenshot for reference:

As you can see, the UIRefreshControl doesn't get fully filled, while my finger is already at the bottom of the screen.

How can I fix that?


回答1:


You can implement scrollViewDidScroll. If the scrollView's contentOffset is past a certain point, then implement your refresh programmatically using beginRefreshing()

eg (with the refresh control connected to an outlet named 'refreshControl')

func scrollViewDidScroll(scrollView: UIScrollView) {

    let currentOffset = scrollView.contentOffset

    let yOffset = currentOffset.y

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

don't forget to set the scrollView's delegate to self if you haven't already

edit: sorry it's beginRefreshing(), not startRefreshing().



来源:https://stackoverflow.com/questions/36767876/uirefreshcontrol-with-low-height-uicollectionview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!