Skip to content
This repository has been archived by the owner on May 8, 2020. It is now read-only.

Commit

Permalink
Improved state checking
Browse files Browse the repository at this point in the history
  • Loading branch information
danielctull committed May 18, 2012
1 parent f08e2d3 commit 02dc26b
Showing 1 changed file with 12 additions and 18 deletions.
30 changes: 12 additions & 18 deletions DCTPullToRefreshController.m
Expand Up @@ -31,9 +31,7 @@ - (void)dctInternal_removeRefreshingViewCompletion:(void(^)())completion;
- (void)dctInternal_setupRefreshPlacement;
@end

@implementation DCTPullToRefreshController {
BOOL preventOffsetUpdates;
}
@implementation DCTPullToRefreshController
@synthesize delegate = _delegate;
@synthesize state = _state;
@synthesize pulledValue = _pulledValue;
Expand Down Expand Up @@ -117,10 +115,10 @@ - (void)setPulledValue:(CGFloat)newPulledValue {

if (self.state == DCTPullToRefreshStateRefreshing) return;

if (pulledValue <= 0.0f)
if (_pulledValue <= 0.0f)
self.state = DCTPullToRefreshStateIdle;

else if (pulledValue <= 1.0f)
else if (_pulledValue <= 1.0f)
self.state = DCTPullToRefreshStatePulling;

else
Expand All @@ -129,22 +127,23 @@ - (void)setPulledValue:(CGFloat)newPulledValue {
[self.refreshView pullToRefreshControllerDidChangePulledValue:self];
}

- (void)setState:(DCTPullToRefreshState)newState {
- (void)setState:(DCTPullToRefreshState)state {

if (_state == state) return;

if (_state == newState) return;
DCTPullToRefreshState oldState = _state;
_state = state;

if (newState == DCTPullToRefreshStateRefreshing) {
if (_state == DCTPullToRefreshStateRefreshing) {
[self dctInternal_removeRefreshView];
[self dctInternal_addRefreshingView];

} else if (_state == DCTPullToRefreshStateRefreshing) {
} else if (oldState == DCTPullToRefreshStateRefreshing) {
[self dctInternal_removeRefreshingViewCompletion:^{
[self dctInternal_addRefreshView];
}];
}

_state = newState;

if ([self.delegate respondsToSelector:@selector(pullToRefreshControllerDidChangeState:)])
[self.delegate pullToRefreshControllerDidChangeState:self];
}
Expand All @@ -166,8 +165,6 @@ - (void)scrollView:(UIScrollView *)scrollView didChangeContentSize:(CGSize)conte

- (void)scrollView:(UIScrollView *)scrollView didChangeContentOffset:(CGPoint)contentOffset {

if (preventOffsetUpdates) return;

if ([scrollView isDragging]) {

CGFloat distanceRequired = -self.refreshView.bounds.size.height;
Expand All @@ -188,14 +185,11 @@ - (void)scrollView:(UIScrollView *)scrollView didChangeContentOffset:(CGPoint)co
return;
}

preventOffsetUpdates = YES;

if (self.state == DCTPullToRefreshStatePulled)
self.state = DCTPullToRefreshStateRefreshing;
else
self.state = DCTPullToRefreshStateIdle;

preventOffsetUpdates = NO;
else if (self.state != DCTPullToRefreshStateRefreshing)
self.state = DCTPullToRefreshStateIdle;
}

- (NSString *)description {
Expand Down

0 comments on commit 02dc26b

Please sign in to comment.