From a2136bddf39f6e8f1749c3abe7d9cc12bcaf4e7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8D=A3=E6=B5=A9?= Date: Tue, 11 Aug 2015 11:28:27 +0800 Subject: [PATCH] fix a bug and optimized code fix pulling to refresh will trigger infinite scroll only trigger infinite view when pull up and only trigger pull view when pull down --- SVPullToRefresh/UIScrollView+SVInfiniteScrolling.m | 9 +++++++-- SVPullToRefresh/UIScrollView+SVPullToRefresh.m | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/SVPullToRefresh/UIScrollView+SVInfiniteScrolling.m b/SVPullToRefresh/UIScrollView+SVInfiniteScrolling.m index e43490ec..e89ba1ac 100644 --- a/SVPullToRefresh/UIScrollView+SVInfiniteScrolling.m +++ b/SVPullToRefresh/UIScrollView+SVInfiniteScrolling.m @@ -183,8 +183,13 @@ - (void)setScrollViewContentInset:(UIEdgeInsets)contentInset { #pragma mark - Observing - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { - if([keyPath isEqualToString:@"contentOffset"]) - [self scrollViewDidScroll:[[change valueForKey:NSKeyValueChangeNewKey] CGPointValue]]; + if([keyPath isEqualToString:@"contentOffset"]) { + CGPoint newPoint = [[change valueForKey:NSKeyValueChangeNewKey] CGPointValue]; + //only excute when pull up + if (newPoint.y >= 0) { + [self scrollViewDidScroll:newPoint]; + } + } else if([keyPath isEqualToString:@"contentSize"]) { [self layoutSubviews]; self.frame = CGRectMake(0, self.scrollView.contentSize.height, self.bounds.size.width, SVInfiniteScrollingViewHeight); diff --git a/SVPullToRefresh/UIScrollView+SVPullToRefresh.m b/SVPullToRefresh/UIScrollView+SVPullToRefresh.m index ba19078c..3966c524 100644 --- a/SVPullToRefresh/UIScrollView+SVPullToRefresh.m +++ b/SVPullToRefresh/UIScrollView+SVPullToRefresh.m @@ -369,8 +369,13 @@ - (void)setScrollViewContentInset:(UIEdgeInsets)contentInset { #pragma mark - Observing - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { - if([keyPath isEqualToString:@"contentOffset"]) - [self scrollViewDidScroll:[[change valueForKey:NSKeyValueChangeNewKey] CGPointValue]]; + if([keyPath isEqualToString:@"contentOffset"]) { + CGPoint newPoint = [[change valueForKey:NSKeyValueChangeNewKey] CGPointValue]; + //only excute when pull down + if (newPoint.y <= 0) { + [self scrollViewDidScroll:newPoint]; + } + } else if([keyPath isEqualToString:@"contentSize"]) { [self layoutSubviews];