Repository: incubator-weex Updated Branches: refs/heads/master 8ce1f1ee8 -> e019f3c8a
[WEEX-492][iOS] Make stoppropagation parameter compatible with Rax framework. Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/e019f3c8 Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/e019f3c8 Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/e019f3c8 Branch: refs/heads/master Commit: e019f3c8a1598944112226a25e24c305f314a4a5 Parents: 8ce1f1e Author: doumafang <[email protected]> Authored: Wed Jul 4 16:08:23 2018 +0800 Committer: Adam Feng <[email protected]> Committed: Thu Jul 5 15:05:05 2018 +0800 ---------------------------------------------------------------------- .../Sources/Component/WXComponent_internal.h | 2 +- .../Sources/Component/WXEditComponent.mm | 19 ++++++++++++++++- .../WeexSDK/Sources/Events/WXComponent+Events.m | 22 ++++++++++++++------ 3 files changed, 35 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e019f3c8/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h ---------------------------------------------------------------------- diff --git a/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h b/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h index d8e2f84..73f4d26 100644 --- a/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h +++ b/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h @@ -91,7 +91,7 @@ typedef id (^WXDataBindingBlock)(NSDictionary *data, BOOL *needUpdate); BOOL _listenVerticalPan; BOOL _listenStopPropagation; - + NSString *_stopPropagationName; WXTouchGestureRecognizer* _touchGesture; /** http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e019f3c8/ios/sdk/WeexSDK/Sources/Component/WXEditComponent.mm ---------------------------------------------------------------------- diff --git a/ios/sdk/WeexSDK/Sources/Component/WXEditComponent.mm b/ios/sdk/WeexSDK/Sources/Component/WXEditComponent.mm index b8b27c3..495f32b 100644 --- a/ios/sdk/WeexSDK/Sources/Component/WXEditComponent.mm +++ b/ios/sdk/WeexSDK/Sources/Component/WXEditComponent.mm @@ -581,7 +581,17 @@ WX_EXPORT_METHOD(@selector(setTextFormatter:)) ((WXTextInputView*)textField).deleteWords = FALSE; ((WXTextInputView*)textField).editWords = string; } - + + if ([_inputType isEqualToString:@"tel"] || [_inputType isEqualToString:@"number"] ) { + if (![self isPureInt:string]) { + if ([string isEqualToString:@"+"]||[string isEqualToString:@"."]||[string isEqualToString:@"*"]||[string isEqualToString:@"#"]||(string.length == 0 && range.length == 1)) + { + return YES; + } + return NO; + } + } + if (_maxLength) { NSUInteger oldLength = [textField.text length]; NSUInteger replacementLength = [string length]; @@ -765,6 +775,13 @@ WX_EXPORT_METHOD(@selector(setTextFormatter:)) return NO; } +- (BOOL)isPureInt:(NSString*)textString +{ + int val; + NSScanner* scan = [NSScanner scannerWithString:textString]; + return[scan scanInt:&val] && [scan isAtEnd]; +} + - (void)setPlaceholderAttributedString { NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:_placeholderString]; http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e019f3c8/ios/sdk/WeexSDK/Sources/Events/WXComponent+Events.m ---------------------------------------------------------------------- diff --git a/ios/sdk/WeexSDK/Sources/Events/WXComponent+Events.m b/ios/sdk/WeexSDK/Sources/Events/WXComponent+Events.m index 7769e3a..84dcdd1 100644 --- a/ios/sdk/WeexSDK/Sources/Events/WXComponent+Events.m +++ b/ios/sdk/WeexSDK/Sources/Events/WXComponent+Events.m @@ -180,17 +180,26 @@ #pragma mark Add & Remove Event - #define WX_ADD_EVENT(eventName, addSelector) \ if ([addEventName isEqualToString:@#eventName]) {\ [self addSelector];\ } +#define WX_ADD_EVENTS(eventName1,eventName2, addSelector) \ +if ([addEventName isEqualToString:@#eventName1]||[addEventName isEqualToString:@#eventName2]) {\ + [self addSelector:addEventName];\ +} + #define WX_REMOVE_EVENT(eventName, removeSelector) \ if ([removeEventName isEqualToString:@#eventName]) {\ [self removeSelector];\ } +#define WX_REMOVE_EVENTS(eventName1,eventName2, removeSelector) \ +if ([removeEventName isEqualToString:@#eventName1]||[removeEventName isEqualToString:@#eventName2]) {\ + [self removeSelector];\ +} + - (void)_initEvents:(NSArray *)events { for (NSString *addEventName in events) { @@ -232,7 +241,7 @@ if ([removeEventName isEqualToString:@#eventName]) {\ WX_ADD_EVENT(touchcancel, addTouchCancelEvent) WX_ADD_EVENT(accessibilityMagicTap, addAccessibilityMagicTapEvent) - WX_ADD_EVENT(stopPropagation, addStopPropagationEvent) + WX_ADD_EVENTS(stopPropagation, stoppropagation, addStopPropagationEvent) if(_isListenPseudoTouch) { self.touchGesture.listenPseudoTouch = YES; @@ -263,8 +272,8 @@ if ([removeEventName isEqualToString:@#eventName]) {\ WX_REMOVE_EVENT(touchcancel, removeTouchCancelEvent) WX_REMOVE_EVENT(accessibilityMagicTap, removeAccessibilityMagicTapEvent) - WX_REMOVE_EVENT(stopPropagation, removeStopPropagationEvent) - + WX_REMOVE_EVENTS(stoppropagation,stopPropagation, removeStopPropagationEvent) + if(_isListenPseudoTouch) { self.touchGesture.listenPseudoTouch = NO; } @@ -337,9 +346,10 @@ if ([removeEventName isEqualToString:@#eventName]) {\ #pragma mark - StopPropagation -- (void)addStopPropagationEvent +- (void)addStopPropagationEvent:(NSString *)stopPropagationName { _listenStopPropagation = YES; + _stopPropagationName = stopPropagationName; self.touchGesture.listenTouchMove = YES; } @@ -778,7 +788,7 @@ if ([removeEventName isEqualToString:@#eventName]) {\ else{ touchState = @"end"; } - BOOL stopPropagation = [[WXEventManager sharedManager]stopPropagation:self.weexInstance.instanceId ref:ref type:@"stopPropagation" params:@{@"changedTouches":resultTouch ? @[resultTouch] : @[],@"action":touchState}]; + BOOL stopPropagation = [[WXEventManager sharedManager]stopPropagation:self.weexInstance.instanceId ref:ref type:_stopPropagationName params:@{@"changedTouches":resultTouch ? @[resultTouch] : @[],@"action":touchState}]; touch.wx_stopPropagation = stopPropagation ? @1 : @0; } }
