cxfeng1 closed pull request #1478: [WEEX-598][iOS] slider component can not
request gesture stoppropagation
URL: https://github.com/apache/incubator-weex/pull/1478
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.h
b/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.h
index 310de99fd1..55fd95e334 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.h
+++ b/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.h
@@ -27,3 +27,6 @@
- (void)setIndicatorView:(WXIndicatorView *)indicatorView;
@end
+@interface WXRecycleSliderScrollView: UIScrollView
+@end
+
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.mm
b/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.mm
index 425ca165b0..2d4a3af175 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.mm
+++ b/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.mm
@@ -24,6 +24,7 @@
#import "WXSDKManager.h"
#import "WXUtility.h"
#import "WXComponent+Layout.h"
+#import "WXComponent+Events.h"
typedef NS_ENUM(NSInteger, Direction) {
DirectionNone = 1 << 0,
@@ -40,15 +41,16 @@ - (void)recycleSliderView:(WXRecycleSliderView
*)recycleSliderView didScroll:(UI
- (void)recycleSliderView:(WXRecycleSliderView *)recycleSliderView
didScrollToItemAtIndex:(NSInteger)index;
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView
willDecelerate:(BOOL)decelerate;
+- (BOOL)requestGestureShouldStopPropagation:(UIGestureRecognizer
*)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;
@end
+
@interface WXRecycleSliderView : UIView <UIScrollViewDelegate>
@property (nonatomic, strong) WXIndicatorView *indicator;
@property (nonatomic, weak) id<WXRecycleSliderViewDelegate> delegate;
-
-@property (nonatomic, strong) UIScrollView *scrollView;
+@property (nonatomic, strong) WXRecycleSliderScrollView *scrollView;
@property (nonatomic, strong) NSMutableArray *itemViews;
@property (nonatomic, assign) Direction direction;
@property (nonatomic, assign) NSInteger currentIndex;
@@ -70,7 +72,7 @@ - (id)initWithFrame:(CGRect)frame
if (self) {
_currentIndex = 0;
_itemViews = [[NSMutableArray alloc] init];
- _scrollView = [[UIScrollView alloc] init];
+ _scrollView = [[WXRecycleSliderScrollView alloc] init];
_scrollView.backgroundColor = [UIColor clearColor];
_scrollView.delegate = self;
_scrollView.showsHorizontalScrollIndicator = NO;
@@ -256,7 +258,6 @@ - (void)nextPage {
- (void)lastPage
{
-
NSInteger lastIndex = [self currentIndex]-1;
if (_itemViews.count > 1) {
if (_infinite) {
@@ -589,6 +590,11 @@ - (void)removeEvent:(NSString *)eventName
}
}
+- (BOOL)requestGestureShouldStopPropagation:(UIGestureRecognizer
*)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
+{
+ return [self gestureShouldStopPropagation:gestureRecognizer
shouldReceiveTouch:touch];
+}
+
#pragma mark WXIndicatorComponentDelegate Methods
-(void)setIndicatorView:(WXIndicatorView *)indicatorView
@@ -680,3 +686,17 @@ - (void)scrollViewDidEndDragging:(UIScrollView
*)scrollView willDecelerate:(BOOL
}
@end
+
+@implementation WXRecycleSliderScrollView
+- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldReceiveTouch:(UITouch *)touch
+{
+ WXRecycleSliderView *view = (WXRecycleSliderView *)self.delegate;
+ if ([(id <WXRecycleSliderViewDelegate>) view.wx_component
respondsToSelector:@selector(requestGestureShouldStopPropagation:shouldReceiveTouch:)])
{
+ return [(id <WXRecycleSliderViewDelegate>) view.wx_component
requestGestureShouldStopPropagation:gestureRecognizer shouldReceiveTouch:touch];
+ }
+ else{
+ return YES;
+ }
+}
+@end
+
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.mm
b/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.mm
index b59bc9a417..bbc780a6f4 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.mm
+++ b/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.mm
@@ -191,7 +191,7 @@ - (void)viewDidLoad
{
[super viewDidLoad];
[self setContentSize:_contentSize];
- WXScrollerComponentView* scrollView = (WXScrollerComponentView *)self.view;
+ WXScrollerComponentView *scrollView = (WXScrollerComponentView *)self.view;
scrollView.delegate = self;
scrollView.exclusiveTouch = YES;
scrollView.autoresizesSubviews = NO;
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services