How Do I Shorten the Pull Distance on UIRefreshControl to Activate the Pull to Refresh Action?

Danchez picture Danchez · Nov 26, 2013 · Viewed 10.4k times · Source

Hey StackOverflow People,

I've been trying to figure out this question for some time now but to no avail and I need some help. I have a UITableView close to the bottom of my app and there's not enough screen distance for the user to engage the refresh. Does anybody know how I can shorten the distance it takes to activate the pull to refresh action on a UIRefreshControl within a UITableView and UIWebView?

Thanks in advance everyone!

Answer

Ashkan Ghodrat picture Ashkan Ghodrat · Jul 25, 2016

you can still use refreshControl but with some modifications!

add these code to your viewController:

var canRefresh = true

override func scrollViewDidScroll(scrollView: UIScrollView) {

    if scrollView.contentOffset.y < -100 { //change 100 to whatever you want

        if canRefresh && !self.refreshControl.refreshing {

            self.canRefresh = false
            self.refreshControl.beginRefreshing()

            self.refresh() // your viewController refresh function
        }
    }else if scrollView.contentOffset.y >= 0 { 

        self.canRefresh = true
    }
}

and as usual in the end of your refresh logic in self.refresh() function add :

   self.refreshControl.endRefreshing()