Skip to content

Commit d969c34

Browse files
committed
fix(dialogs): ios fix to correctly select controller to show dialog from
1 parent 5a7ed3c commit d969c34

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

src/dialogs/dialogs.ios.ts

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ class MDCAlertControllerImpl extends MDCAlertController {
8787
clear: Function;
8888
_resolveFunction?: Function;
8989
_disableContentInsets: boolean;
90-
_savedPreferredContentSize: CGSize
90+
_savedPreferredContentSize: CGSize;
9191
viewDidAppear(animated: boolean) {
9292
super.viewDidAppear(animated);
9393
if (this.autoFocusTextField) {
@@ -105,7 +105,7 @@ class MDCAlertControllerImpl extends MDCAlertController {
105105
viewDidLayoutSubviews() {
106106
// we enforce the bounds first
107107
// when showing a modal on top of us and then hiding the modal, our size gets messed up
108-
if(this._savedPreferredContentSize) {
108+
if (this._savedPreferredContentSize) {
109109
this.preferredContentSize = this._savedPreferredContentSize;
110110
this._savedPreferredContentSize = null;
111111
}
@@ -581,11 +581,22 @@ function showUIAlertController(alertController: MDCAlertController, options: Dia
581581
if (currentView) {
582582
currentView = currentView.modal || currentView;
583583

584-
let viewController = Application.ios.rootController;
584+
let viewController = currentView.viewController;
585585

586-
while (viewController && viewController.presentedViewController) {
587-
viewController = viewController.presentedViewController;
586+
while (viewController.presentedViewController) {
587+
while (
588+
viewController.presentedViewController instanceof UIAlertController ||
589+
(viewController.presentedViewController['isAlertController'] && viewController.presentedViewController.presentedViewController)
590+
) {
591+
viewController = viewController.presentedViewController;
592+
}
593+
if (viewController.presentedViewController instanceof UIAlertController || viewController.presentedViewController['isAlertController']) {
594+
break;
595+
} else {
596+
viewController = viewController.presentedViewController;
597+
}
588598
}
599+
let v;
589600
showingDialogs.push(alertController);
590601
if (viewController) {
591602
if (alertController.popoverPresentationController) {

0 commit comments

Comments
 (0)