@@ -90,8 +90,8 @@ - (void)presentDialogWithTitle:(NSString * _Nonnull)title withMessage:(NSString
9090}
9191
9292- (void )displayDialog : (OSDialogRequest * _Nonnull)request {
93- let rootViewController = [[[UIApplication sharedApplication ] keyWindow ] rootViewController ];
94-
93+ let visibleViewController = [OneSignalDialogController visibleViewController ];
94+
9595 let controller = [UIAlertController alertControllerWithTitle: request.title message: request.message preferredStyle: UIAlertControllerStyleAlert];
9696
9797 [controller addAction: [UIAlertAction actionWithTitle: request.cancelTitle style: UIAlertActionStyleCancel handler: ^(UIAlertAction * _Nonnull action) {
@@ -106,8 +106,8 @@ - (void)displayDialog:(OSDialogRequest * _Nonnull)request {
106106 }]];
107107 }
108108 }
109-
110- [rootViewController presentViewController: controller animated: true completion: nil ];
109+
110+ [visibleViewController presentViewController: controller animated: true completion: nil ];
111111}
112112#pragma clang diagnostic push
113113#pragma clang diagnostic ignored "-Wdeprecated"
@@ -139,4 +139,23 @@ - (void)clearQueue {
139139 self.queue = [NSMutableArray new ];
140140}
141141
142+ + (UIViewController *)visibleViewController {
143+ let rootViewController = [[[UIApplication sharedApplication ] keyWindow ] rootViewController ];
144+ return [OneSignalDialogController getVisibleViewControllerFrom: rootViewController];
145+ }
146+
147+ + (UIViewController *)getVisibleViewControllerFrom : (UIViewController *) vc {
148+ if ([vc isKindOfClass: [UINavigationController class ]]) {
149+ return [OneSignalDialogController getVisibleViewControllerFrom: [((UINavigationController *) vc) visibleViewController ]];
150+ } else if ([vc isKindOfClass: [UITabBarController class ]]) {
151+ return [OneSignalDialogController getVisibleViewControllerFrom: [((UITabBarController *) vc) selectedViewController ]];
152+ } else {
153+ if (vc.presentedViewController ) {
154+ return [OneSignalDialogController getVisibleViewControllerFrom: vc.presentedViewController];
155+ } else {
156+ return vc;
157+ }
158+ }
159+ }
160+
142161@end
0 commit comments