* [ios] fix animationModule callback recursively bug
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/625c80cd Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/625c80cd Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/625c80cd Branch: refs/heads/0.16-dev Commit: 625c80cd4b64d4029933f125d3793de17152f9af Parents: 6c4ca52 Author: doumafang <[email protected]> Authored: Tue Sep 19 14:41:27 2017 +0800 Committer: doumafang <[email protected]> Committed: Tue Sep 19 14:41:27 2017 +0800 ---------------------------------------------------------------------- .../WeexSDK/Sources/Module/WXAnimationModule.m | 26 +++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/625c80cd/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m ---------------------------------------------------------------------- diff --git a/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m b/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m index 824431d..962763b 100644 --- a/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m +++ b/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m @@ -43,7 +43,6 @@ - (id)copyWithZone:(NSZone *)zone { WXAnimationInfo *info = [[WXAnimationInfo allocWithZone:zone] init]; - info.target = self.target; info.propertyName = self.propertyName; info.fromValue = self.fromValue; @@ -51,7 +50,6 @@ info.duration = self.duration; info.delay = self.delay; info.timingFunction = self.timingFunction; - return info; } @@ -138,6 +136,7 @@ @property (nonatomic,assign) BOOL needLayout; @property (nonatomic, strong) WXTransition *transition; +@property (nonatomic, assign) BOOL isAnimationedSuccess; @end @@ -150,11 +149,14 @@ WX_EXPORT_METHOD(@selector(transition:args:callback:)) - (void)transition:(NSString *)nodeRef args:(NSDictionary *)args callback:(WXModuleCallback)callback { _needLayout = NO; + _isAnimationedSuccess = YES; WXPerformBlockOnComponentThread(^{ WXComponent *targetComponent = [self.weexInstance componentForRef:nodeRef]; if (!targetComponent) { if (callback) { - callback([NSString stringWithFormat:@"No component find for ref:%@", nodeRef]); + NSDictionary *message = @{@"result":@"Fail", + @"message":[NSString stringWithFormat:@"No component find for ref:%@", nodeRef]}; + callback(message); } return; } @@ -164,6 +166,7 @@ WX_EXPORT_METHOD(@selector(transition:args:callback:)) }); } + - (NSArray<WXAnimationInfo *> *)animationInfoArrayFromArgs:(NSDictionary *)args target:(WXComponent *)target { UIView *view = target.view; @@ -296,7 +299,6 @@ WX_EXPORT_METHOD(@selector(transition:args:callback:)) } } } - return infos; } @@ -338,7 +340,17 @@ WX_EXPORT_METHOD(@selector(transition:args:callback:)) [CATransaction setAnimationTimingFunction:[WXConvert CAMediaTimingFunction:args[@"timingFunction"]]]; [CATransaction setCompletionBlock:^{ if (callback) { - callback(@"SUCCESS"); + NSDictionary *message; + if (_isAnimationedSuccess) { + message = @{@"result":@"Success", + @"message":@"Success"}; + } + else + { + message = @{@"result":@"Fail", + @"message":@"Animation did not complete"}; + } + callback(message); } }]; NSArray<WXAnimationInfo *> *infos = [self animationInfoArrayFromArgs:args target:targetComponent]; @@ -366,7 +378,9 @@ WX_EXPORT_METHOD(@selector(transition:args:callback:)) animation.fillMode = kCAFillModeForwards; WXAnimationDelegate *delegate = [[WXAnimationDelegate alloc] initWithAnimationInfo:info finishBlock:^(BOOL isFinish) { - + if (!isFinish) { + _isAnimationedSuccess = isFinish; + } }]; animation.delegate = delegate;
