A quick pull-to-refresh implementation
This implementation requires you manually add a view to the scrollView/tableView called pullToRefreshView above the 0,0 contentOffset. I'm also using a pullToRefreshTriggered boolean ivar.
I'm sure there are other ways of doing this, but this is the one I came up with.
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
float yOffset = scrollView.contentOffset.y;
float refreshOffset = self.pullToRefreshView.frame.origin.y;
static CGPoint lastOffset;
self.pullToRefreshView.alpha = yOffset / refreshOffset;
if (scrollView.tracking) {
if (yOffset < refreshOffset) {
pullToRefreshTriggered = YES;
self.pullToRefreshView.label.text = @"Release to Sync";
} else {
pullToRefreshTriggered = NO;
self.pullToRefreshView.label.text = @"Pull to Sync";
}
} else {
if (self.pullToRefreshTriggered) {
self.pullToRefreshTriggered = NO;
[scrollView setContentOffset:lastOffset animated:NO];
[UIView animateWithDuration:0.5f delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^{
[scrollView setContentOffset:CGPointMake(0, refreshOffset) animated:NO];
} completion:nil];
// Add refresh code here. The table will pause showing the header until the setContentOffset call below.
self.pullToRefreshView.label.text = @"Syncing...";
[scrollView setContentOffset:CGPointMake(0, 0) animated:YES];
}
}
lastOffset = scrollView.contentOffset;
}
Written by Will Helling
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Ios
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#