[WEEX-443][iOS]Fix picker module callback not called on iOS 11.0.x
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/fc93b106 Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/fc93b106 Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/fc93b106 Branch: refs/heads/release Commit: fc93b106d03bd52da126c153825fe1d60a1dcc48 Parents: 0eb7683 Author: Xiaomin <[email protected]> Authored: Thu Jun 7 20:42:06 2018 +0800 Committer: Adam Feng <[email protected]> Committed: Wed Jun 13 17:08:06 2018 +0800 ---------------------------------------------------------------------- .../WeexSDK/Sources/Manager/WXDatePickerManager.m | 13 ++++++++++++- ios/sdk/WeexSDK/Sources/Module/WXPickerModule.m | 16 +++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fc93b106/ios/sdk/WeexSDK/Sources/Manager/WXDatePickerManager.m ---------------------------------------------------------------------- diff --git a/ios/sdk/WeexSDK/Sources/Manager/WXDatePickerManager.m b/ios/sdk/WeexSDK/Sources/Manager/WXDatePickerManager.m index d671634..857ca82 100644 --- a/ios/sdk/WeexSDK/Sources/Manager/WXDatePickerManager.m +++ b/ios/sdk/WeexSDK/Sources/Manager/WXDatePickerManager.m @@ -25,7 +25,7 @@ #define WXPickerHeight 266 -@interface WXDatePickerManager() +@interface WXDatePickerManager() <UIGestureRecognizerDelegate> @property(nonatomic,strong)UIDatePicker *datePicker; @property(nonatomic,strong)UIView *backgroudView; @@ -46,6 +46,9 @@ { self.backgroudView = [self createBackgroundView]; UITapGestureRecognizer *tapGesture=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(hide)]; + if (WX_SYS_VERSION_GREATER_THAN_OR_EQUAL_TO(@"11.0")) { + tapGesture.delegate = self; + } [self.backgroudView addGestureRecognizer:tapGesture]; } @@ -211,4 +214,12 @@ } +#pragma mark - UIGestureRecognizerDelegate +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { + if (self.datePickerView && [touch.view isDescendantOfView:self.datePickerView]) { + return NO; + } + return YES; +} + @end http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fc93b106/ios/sdk/WeexSDK/Sources/Module/WXPickerModule.m ---------------------------------------------------------------------- diff --git a/ios/sdk/WeexSDK/Sources/Module/WXPickerModule.m b/ios/sdk/WeexSDK/Sources/Module/WXPickerModule.m index 52fdf59..b894113 100644 --- a/ios/sdk/WeexSDK/Sources/Module/WXPickerModule.m +++ b/ios/sdk/WeexSDK/Sources/Module/WXPickerModule.m @@ -28,7 +28,7 @@ #define WXPickerHeight 266 #define WXPickerToolBarHeight 44 -@interface WXPickerModule() +@interface WXPickerModule() <UIGestureRecognizerDelegate> @property (nonatomic, strong)NSString * pickerType; // when resign the picker ,then the focus will be. @@ -269,6 +269,9 @@ WX_EXPORT_METHOD(@selector(pickTime:callback:)) { self.backgroundView = [self createbackgroundView]; UITapGestureRecognizer *tapGesture=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(hide)]; + if (WX_SYS_VERSION_GREATER_THAN_OR_EQUAL_TO(@"11.0")) { + tapGesture.delegate = self; + } [self.backgroundView addGestureRecognizer:tapGesture]; self.pickerView = [self createPickerView]; UIToolbar *toolBar=[[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, WXPickerToolBarHeight)]; @@ -468,6 +471,9 @@ WX_EXPORT_METHOD(@selector(pickTime:callback:)) { self.backgroundView = [self createbackgroundView]; UITapGestureRecognizer *tapGesture=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(hide)]; + if (WX_SYS_VERSION_GREATER_THAN_OR_EQUAL_TO(@"11.0")) { + tapGesture.delegate = self; + } [self.backgroundView addGestureRecognizer:tapGesture]; self.pickerView = [self createPickerView]; UIToolbar *toolBar=[[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, WXPickerToolBarHeight)]; @@ -511,4 +517,12 @@ WX_EXPORT_METHOD(@selector(pickTime:callback:)) } } +#pragma mark - UIGestureRecognizerDelegate +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { + if (self.pickerView && [touch.view isDescendantOfView:self.pickerView]) { + return NO; + } + return YES; +} + @end
