|
|
@@ -95,28 +95,46 @@ - (void)scrollViewPanStateDidChange:(NSDictionary *)change
|
|
|
if (self.state != MJRefreshStateIdle) return;
|
|
|
|
|
|
UIGestureRecognizerState panState = _scrollView.panGestureRecognizer.state;
|
|
|
- if (panState == UIGestureRecognizerStateEnded) {// 手松开
|
|
|
- if (_scrollView.mj_insetT + _scrollView.mj_contentH <= _scrollView.mj_h) { // 不够一个屏幕
|
|
|
- if (_scrollView.mj_offsetY >= - _scrollView.mj_insetT) { // 向上拽
|
|
|
- [self beginRefreshing];
|
|
|
- }
|
|
|
- } else { // 超出一个屏幕
|
|
|
- if (_scrollView.mj_offsetY >= _scrollView.mj_contentH + _scrollView.mj_insetB - _scrollView.mj_h) {
|
|
|
- [self beginRefreshing];
|
|
|
+
|
|
|
+ switch (panState) {
|
|
|
+ // 手松开
|
|
|
+ case UIGestureRecognizerStateEnded: {
|
|
|
+ if (_scrollView.mj_insetT + _scrollView.mj_contentH <= _scrollView.mj_h) { // 不够一个屏幕
|
|
|
+ if (_scrollView.mj_offsetY >= - _scrollView.mj_insetT) { // 向上拽
|
|
|
+ [self beginRefreshing];
|
|
|
+ }
|
|
|
+ } else { // 超出一个屏幕
|
|
|
+ if (_scrollView.mj_offsetY >= _scrollView.mj_contentH + _scrollView.mj_insetB - _scrollView.mj_h) {
|
|
|
+ [self beginRefreshing];
|
|
|
+ }
|
|
|
}
|
|
|
+ }// ‼️注意: 这里没有 break; fallthrough 执行重置 oneNewPan 语句 (Ended & Canceled & Failed)
|
|
|
+
|
|
|
+ case UIGestureRecognizerStateCancelled:
|
|
|
+ case UIGestureRecognizerStateFailed: {
|
|
|
+ self.oneNewPan = NO;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case UIGestureRecognizerStateBegan: {
|
|
|
+ self.oneNewPan = YES;
|
|
|
}
|
|
|
- } else if (panState == UIGestureRecognizerStateBegan) {
|
|
|
- self.oneNewPan = YES;
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+- (BOOL)ignoreRefreshAction {
|
|
|
+ return !self.isOneNewPan && self.isOnlyRefreshPerDrag;
|
|
|
+}
|
|
|
+
|
|
|
- (void)beginRefreshing
|
|
|
{
|
|
|
- if (!self.isOneNewPan && self.isOnlyRefreshPerDrag) return;
|
|
|
+ if ([self ignoreRefreshAction]) return;
|
|
|
|
|
|
[super beginRefreshing];
|
|
|
-
|
|
|
- self.oneNewPan = NO;
|
|
|
}
|
|
|
|
|
|
- (void)setState:(MJRefreshState)state
|