From 1ab3b0fb53f5fe419d28d8975eef20dac138e912 Mon Sep 17 00:00:00 2001 From: Ran Greenberg Date: Thu, 30 Nov 2017 16:56:52 +0200 Subject: [PATCH] Fix dismissAllModal API - the root won't unregister when invoke dismissAllModals --- ios/RCCManagerModule.m | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ios/RCCManagerModule.m b/ios/RCCManagerModule.m index 86aa9eeb9cb..b0d4c00a9a0 100755 --- a/ios/RCCManagerModule.m +++ b/ios/RCCManagerModule.m @@ -142,6 +142,8 @@ -(void)animateSnapshot:(UIView*)snapshot animationType:(NSString*)animationType -(void)dismissAllModalPresenters:(NSMutableArray*)allPresentedViewControllers resolver:(RCTPromiseResolveBlock)resolve { + UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController; + if (allPresentedViewControllers.count > 0) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),^ @@ -151,7 +153,7 @@ -(void)dismissAllModalPresenters:(NSMutableArray*)allPresentedViewControllers re { counter++; - [[RCCManager sharedIntance] unregisterController:viewController]; + if (viewController.presentedViewController != nil) { dispatch_semaphore_t dismiss_sema = dispatch_semaphore_create(0); @@ -160,6 +162,10 @@ -(void)dismissAllModalPresenters:(NSMutableArray*)allPresentedViewControllers re { [viewController dismissViewControllerAnimated:NO completion:^() { + if (rootViewController != viewController) { + [[RCCManager sharedIntance] unregisterController:viewController]; + } + if (counter == allPresentedViewControllers.count && allPresentedViewControllers.count > 0) { [allPresentedViewControllers removeAllObjects];