Hi, During the recent testing of our ios cordova applications, we got an issue of the app’s main UIwebview UI freezing after dismissing the inappbrowser. Debugging shows somehow the UIWindow created by inappbrowser did not deallocated as expected after calling the close method to dismiss the inappbrowser. So although the inappbrowser’s UIWindows is invisiable, but it is still the keywindow and receive the user input. The xcode instrument shows there is only one reference on the inappbrowser’s UIWindow object , which is expected to be released after dismissing the inappbrowser viewcontroller. Although this part of logic is inside the Apple SDK, and not sure exactly when the UIWindow is released within the Apple SDK. Note this happens randomly, so it may be a timing related issue.
Just wonder whether anyone else has seen the similar issue? Or have any idea about it. Both main webview and inappbrwoser webview use UIWebView to show the html content. WKWebview is not involved. For now, we added an if condition in the show method in dispatch_async block in our inappbrowser.m to work around the issue, but if others see the same thing, we will need to have a pull request for this change. - (void)show:(CDVInvokedUrlCommand*)command { … // Run later to avoid the "took a long time" log message. dispatch_async(dispatch_get_main_queue(), ^{ if (weakSelf.inAppBrowserViewController != nil) { if ([weakSelf.inAppBrowserViewController.webView isKindOfClass:[WKWebView class]]) { CGRect frame = [[UIScreen mainScreen] bounds]; UIWindow *tmpWindow = [[UIWindow alloc] initWithFrame:frame]; UIViewController *tmpController = [[UIViewController alloc] init]; [tmpWindow setRootViewController:tmpController]; [tmpWindow setWindowLevel:UIWindowLevelNormal]; [tmpWindow makeKeyAndVisible]; [tmpController presentViewController:nav animated:YES completion:nil]; } else { [weakSelf.viewController presentViewController:nav animated:YES completion:nil]; } } }); } Thanks Jonathan