* [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