* [ios] fix some parameters with fireEvent of 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/180b9748 Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/180b9748 Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/180b9748 Branch: refs/heads/master Commit: 180b9748d39b698d44e9a0bd64897f3ef42c18b9 Parents: 2891c7e Author: doumafang <doumaf...@gmail.com> Authored: Mon Nov 13 17:09:16 2017 +0800 Committer: doumafang <doumaf...@gmail.com> Committed: Mon Nov 13 17:09:16 2017 +0800 ---------------------------------------------------------------------- .../Sources/Component/WXScrollerComponent.m | 31 ++++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/180b9748/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 16f5e8e..2eb74c9 100644 --- a/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m +++ b/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m @@ -63,6 +63,8 @@ CGSize _contentSize; BOOL _listenLoadMore; BOOL _scrollEvent; + BOOL _scrollStartEvent; + BOOL _scrollEndEvent; CGFloat _loadMoreOffset; CGFloat _previousLoadMoreContentHeight; CGFloat _offsetAccuracy; @@ -116,6 +118,8 @@ WX_EXPORT_METHOD(@selector(resetLoadmore)) _stickyArray = [NSMutableArray array]; _listenerArray = [NSMutableArray array]; _scrollEvent = NO; + _scrollStartEvent = NO; + _scrollEndEvent = NO; _lastScrollEventFiredOffset = CGPointMake(0, 0); _scrollDirection = attributes[@"scrollDirection"] ? [WXConvert WXScrollDirection:attributes[@"scrollDirection"]] : WXScrollDirectionVertical; _showScrollBar = attributes[@"showScrollbar"] ? [WXConvert BOOL:attributes[@"showScrollbar"]] : YES; @@ -260,6 +264,12 @@ WX_EXPORT_METHOD(@selector(resetLoadmore)) if ([eventName isEqualToString:@"scroll"]) { _scrollEvent = YES; } + if ([eventName isEqualToString:@"scrollStart"]) { + _scrollStartEvent = YES; + } + if ([eventName isEqualToString:@"scrollEnd"]) { + _scrollEndEvent = YES; + } } - (void)removeEvent:(NSString *)eventName @@ -270,6 +280,12 @@ WX_EXPORT_METHOD(@selector(resetLoadmore)) if ([eventName isEqualToString:@"scroll"]) { _scrollEvent = NO; } + if ([eventName isEqualToString:@"scrollStart"]) { + _scrollStartEvent = NO; + } + if ([eventName isEqualToString:@"scrollEnd"]) { + _scrollEndEvent = NO; + } } #pragma mark WXScrollerProtocol @@ -490,7 +506,12 @@ WX_EXPORT_METHOD(@selector(resetLoadmore)) #pragma mark UIScrollViewDelegate - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { - [self fireEvent:@"scrollstart" params:nil domChanges:nil]; + if (_scrollStartEvent) { + 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:@"scrollstart" params:@{@"contentSize":contentSizeData,@"contentOffset":contentOffsetData} domChanges:nil]; + } } - (void)scrollViewDidScroll:(UIScrollView *)scrollView @@ -573,8 +594,12 @@ WX_EXPORT_METHOD(@selector(resetLoadmore)) } [scrollView setContentInset:inset]; - [self fireEvent:@"scrollend" params:nil domChanges:nil]; - + 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]; + } } - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate