[
https://issues.apache.org/jira/browse/CB-9441?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
jcesarmobile reassigned CB-9441:
--------------------------------
Assignee: jcesarmobile
> cordova-plugin-dialogs alert does not show on iOS when there's another plugin
> on top of the UIVIewController
> ------------------------------------------------------------------------------------------------------------
>
> Key: CB-9441
> URL: https://issues.apache.org/jira/browse/CB-9441
> Project: Apache Cordova
> Issue Type: Bug
> Components: iOS, Plugin Dialogs
> Affects Versions: 3.5.0
> Reporter: Xingchen Yu
> Assignee: jcesarmobile
>
> navigator.notifications.alert / confirm is supposed to display a dialog on
> top of the app, however when there's another plugin that's being shown (such
> as InAppBrwoser or its forks), navigator.notifications.alert / confirm will
> do nothing. In Xcode console you can see the following warning:
> Warning: Attempt to present UIAlertController on MainViewController whose
> view is not in the window hierarchy
> Reproduction step:
> 1. Install cordova-plugin-dialogs
> 2. Install cordova-plugin-inappbrowser
> 3. Create a dummy button that launches InAppBrowser
> 4. Listen to one of InAppBrowser's events, such as loadstop. Inside the event
> listener, call navigator.notification.alert / confirm
> 5. Build iOS
> 6. Click dummy button to launch InAppBrowser. Observe that alert does not
> show up and the above warning in Xcode console.
> 7. More conveniently, simply connect to Safari debugger, call
> navigator.notification.alert / confirm in JavaScript console while
> InAppBrowser is shown. Observe same issue as step 6.
> I have already debugged this issue, so please allow me to explain. iOS only
> allows you to stack a new UIViewController on top of the top most
> UiViewController. In case of cordova-plugin-dialogs, it simply stacks on top
> of self.viewController, which is the app's default UIViewController. However
> when another plugin (think InAppBrowser) that also stacks on top of
> self.viewController, now the other plugin is the top most UIViewController,
> and iOS prevents further UIViewController to be stacked on
> self.viewController. Therefore cordova-plugin-dialogs now does nothing but a
> warning from Xcode console.
> This issue is somewhat related to CB-9347 and its pull request
> https://github.com/apache/cordova-plugin-dialogs/pull/54 can mostly fix this
> issue along with it. However CB-9347 addresses a very different use case, and
> it doesn't address a case where a third party plugin may be in the process of
> dismissing and navigator.notification.alert / confirm may be called.
> I can contribute a pull request, but I'd like to see CB-9347 accepted first,
> so I can test it out and take appropriate actions, since CB-9347 is highly
> related in coding.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]