|
|
@@ -12,6 +12,7 @@
|
|
|
|
|
|
@property (nonatomic,strong) NSMutableDictionary *stateTitle;
|
|
|
@property (nonatomic,strong) UILabel *refreshTitleLabel;
|
|
|
+@property (nonatomic,assign) BOOL stopWithNomore;
|
|
|
|
|
|
@end
|
|
|
|
|
|
@@ -39,7 +40,7 @@
|
|
|
- (NSMutableDictionary *)stateTitle {
|
|
|
if (!_stateTitle) {
|
|
|
_stateTitle = [@{
|
|
|
- @(JLRefreshStateIdle) : @"will load More",
|
|
|
+ @(JLRefreshStateIdle) : @"pull to load more",
|
|
|
@(JLRefreshStatePulling) : @"will load More",
|
|
|
@(JLRefreshStateWillRefresh) : @"loosen to load more",
|
|
|
@(JLRefreshStateRefreshing) : @"loading...",
|
|
|
@@ -107,7 +108,7 @@
|
|
|
|
|
|
CGFloat offsetY = self.scrollView.jl_offsetY + self.scrollView.jl_height;
|
|
|
CGFloat startY = self.scrollView.jl_insetBottom + self.scrollView.jl_ContentHeight - self.jl_height;
|
|
|
- CGFloat idle2WillRefresh = startY + self.jl_height;
|
|
|
+ CGFloat idle2WillRefresh = startY + self.jl_height * 1.5;
|
|
|
|
|
|
if ([self contentSizeIsOutOfScrollViewBounds]) {
|
|
|
|
|
|
@@ -118,8 +119,11 @@
|
|
|
|
|
|
|
|
|
if (self.scrollView.isDragging) {
|
|
|
-
|
|
|
- if (self.state == JLRefreshStateIdle) { // 1
|
|
|
+ if (self.state == JLRefreshStateNoMore) {
|
|
|
+
|
|
|
+ self.state = JLRefreshStateIdle;
|
|
|
+
|
|
|
+ } else if (self.state == JLRefreshStateIdle) { // 1
|
|
|
|
|
|
self.state = JLRefreshStatePulling; // 2
|
|
|
|
|
|
@@ -140,6 +144,13 @@
|
|
|
// 停止拖动的减速过程
|
|
|
if (self.state != JLRefreshStateRefreshing && offsetY >= idle2WillRefresh) {
|
|
|
self.state = JLRefreshStateRefreshing;
|
|
|
+ } else {
|
|
|
+ if (self.stopWithNomore) {
|
|
|
+ [self setState:JLRefreshStateNoMore];
|
|
|
+ }
|
|
|
+ if (self.state != JLRefreshStateNoMore) {
|
|
|
+ self.state = JLRefreshStateIdle;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -149,11 +160,13 @@
|
|
|
percentage = 0;
|
|
|
}
|
|
|
self.pullPercentage = percentage;
|
|
|
+
|
|
|
[self showTip];
|
|
|
if (self.refreshDelegate && [self.refreshDelegate respondsToSelector:@selector(jl_pullRefresh:state:percentage:)]) {
|
|
|
[self.refreshDelegate jl_pullRefresh:self state:self.state percentage:self.pullPercentage];
|
|
|
}
|
|
|
|
|
|
+
|
|
|
} else {
|
|
|
|
|
|
CGPoint old = [change[@"old"] CGPointValue];
|
|
|
@@ -241,6 +254,7 @@
|
|
|
if (weakself.refreshDelegate && [weakself.refreshDelegate respondsToSelector:@selector(jl_beginRefresh:)]) {
|
|
|
|
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
|
+ weakself.stopWithNomore = NO;
|
|
|
[weakself.refreshDelegate jl_beginRefresh:weakself];
|
|
|
});
|
|
|
|
|
|
@@ -254,6 +268,9 @@
|
|
|
|
|
|
- (void)noMoreData {
|
|
|
self.state = JLRefreshStateNoMore;
|
|
|
+ if (self.scrollView.isDecelerating) {
|
|
|
+ self.stopWithNomore = YES; // Scrollviewc重新刷新数据后才能赋值NO
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- (void)showTip {
|