Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to customize UIRefreshControl to make pull-down-height lower than default

In UIRefreshControl in iOS App, I think the default setting is that when I pull down UITableView(UISrollView) by about "100px", refresh begins.

I would like to make the above value smaller.(for example, "50px")

Is this possible?

If possible, please tell me sample codes.

like image 732
supermonkey Avatar asked Sep 06 '14 10:09

supermonkey


1 Answers

Try this:

// definition
extension UIRefreshControl {
    func refreshManually() {
        beginRefreshing()
        sendActions(for: .valueChanged)
    }
}

// usage
var isRefreshingManually = false
func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if scrollView.contentOffset.y < -80.0 {
        if !isRefreshingManually && !refreshControl.isRefreshing {
            isRefreshingManually = true
            refreshControl.refreshManually()
        }
    } else if scrollView.contentOffset.y >= 0 {
        isRefreshingManually = false
    }
}

My sample code is for UICollectionView, but UITableView & UIScollView work well, too.

Replace "-80.0" in my code to threshould value you want.

like image 62
Ryosuke Hiramatsu Avatar answered Sep 17 '22 14:09

Ryosuke Hiramatsu