* [ios] fix bugs and add examples for scrollstart and scrollend

Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/3071cb0f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/3071cb0f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/3071cb0f

Branch: refs/heads/master
Commit: 3071cb0f20366d2ed1ad6c39f146f00aa8495740
Parents: 67efb8f
Author: doumafang <doumaf...@gmail.com>
Authored: Thu Nov 16 18:03:06 2017 +0800
Committer: doumafang <doumaf...@gmail.com>
Committed: Thu Nov 16 18:03:06 2017 +0800

----------------------------------------------------------------------
 .../Sources/Component/WXScrollerComponent.m     | 21 +++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/3071cb0f/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m 
b/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m
index 63acfaa..368234d 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m
@@ -65,6 +65,7 @@
     BOOL _scrollEvent;
     BOOL _scrollStartEvent;
     BOOL _scrollEndEvent;
+    BOOL _isScrolling;
     CGFloat _loadMoreOffset;
     CGFloat _previousLoadMoreContentHeight;
     CGFloat _offsetAccuracy;
@@ -544,7 +545,6 @@ WX_EXPORT_METHOD(@selector(resetLoadmore))
              @"type":@"pullingdown"
     }];
     _lastContentOffset = scrollView.contentOffset;
-    
     // check sticky
     [self adjustSticky];
     [self handleAppear];
@@ -592,16 +592,20 @@ WX_EXPORT_METHOD(@selector(resetLoadmore))
     } else {
         inset.bottom = 0;
     }
-    
     [scrollView setContentInset:inset];
+}
+
+- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
+{
     if (_scrollEndEvent) {
-        CGFloat scaleFactor = self.weexInstance.pixelScaleFactor;
-        NSDictionary *contentSizeData = @{@"width":[NSNumber 
numberWithFloat:scrollView.contentSize.width / scaleFactor],@"height":[NSNumber 
numberWithFloat:scrollView.contentSize.height / scaleFactor]};
-        NSDictionary *contentOffsetData = @{@"x":[NSNumber 
numberWithFloat:-scrollView.contentOffset.x / scaleFactor],@"y":[NSNumber 
numberWithFloat:-scrollView.contentOffset.y / scaleFactor]};
-        [self fireEvent:@"scrollend" 
params:@{@"contentSize":contentSizeData,@"contentOffset":contentOffsetData} 
domChanges:nil];
+        if (!_isScrolling) {
+            CGFloat scaleFactor = self.weexInstance.pixelScaleFactor;
+            NSDictionary *contentSizeData = @{@"width":[NSNumber 
numberWithFloat:scrollView.contentSize.width / scaleFactor],@"height":[NSNumber 
numberWithFloat:scrollView.contentSize.height / scaleFactor]};
+            NSDictionary *contentOffsetData = @{@"x":[NSNumber 
numberWithFloat:-scrollView.contentOffset.x / scaleFactor],@"y":[NSNumber 
numberWithFloat:-scrollView.contentOffset.y / scaleFactor]};
+            [self fireEvent:@"scrollend" 
params:@{@"contentSize":contentSizeData,@"contentOffset":contentOffsetData} 
domChanges:nil];
+        }
     }
 }
-
 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView 
willDecelerate:(BOOL)decelerate
 {
     [_loadingComponent.view setHidden:NO];
@@ -617,6 +621,9 @@ WX_EXPORT_METHOD(@selector(resetLoadmore))
         scrollView.contentOffset.y + scrollView.frame.size.height > 
_loadingComponent.view.frame.origin.y + 
_loadingComponent.calculatedFrame.size.height) {
         [_loadingComponent loading];
     }
+    if (!decelerate) {
+        _isScrolling = NO;
+    }
 }
 
 - (void)handleAppear

Reply via email to