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!
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()
As per the Apple Docs, I don't see any way to modify UIRefreshControl
parameters.
link: https://developer.apple.com/library/ios/documentation/uikit/reference/UIRefreshControl_class/Reference/Reference.html
Use a third-party component like ODRefreshControl (to customize the scroll-distance in order to activate the refresh, modify the #define kMaxDistance
constant).
Don't use the UIRefreshControl
and instead implement your own logic in the -scrollViewDidScroll
method like:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if ((scrollView.contentOffset.y + scrollView.frame.size.height) >= scrollView.contentSize.height) {
//refresh logic
}
}
For Swift 3.2 and above :
var canRefresh = true
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView.contentOffset.y < -100 {
if canRefresh && !self.refreshControl.isRefreshing {
self.canRefresh = false
self.refreshControl.beginRefreshing()
self.handleRefresh()
}
} else if scrollView.contentOffset.y >= 0 {
self.canRefresh = true
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With