cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "jcesarmobile (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CB-9441) cordova-plugin-dialogs alert does not show on iOS when there's another plugin on top of the UIVIewController
Date Mon, 03 Aug 2015 11:19:04 GMT

    [ https://issues.apache.org/jira/browse/CB-9441?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14651751#comment-14651751
] 

jcesarmobile commented on CB-9441:
----------------------------------

I've tested with my pull request and it's working

To test my pull request on your project, remove dialogs plugin and install my fork with
cordova plugin add https://github.com/jcesarmobile/cordova-plugin-dialogs



> 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: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org


Mime
View raw message