diff --git a/Rg.Plugins.Popup/Platforms/Ios/Impl/PopupPlatformIos.cs b/Rg.Plugins.Popup/Platforms/Ios/Impl/PopupPlatformIos.cs index 9354d74..bdd354a 100644 --- a/Rg.Plugins.Popup/Platforms/Ios/Impl/PopupPlatformIos.cs +++ b/Rg.Plugins.Popup/Platforms/Ios/Impl/PopupPlatformIos.cs @@ -59,9 +59,24 @@ public Task AddAsync(PopupPage page) PopupWindow window; if (IsiOS13OrNewer) { - if (UIApplication.SharedApplication.ConnectedScenes.ToArray() - .FirstOrDefault(x => x.ActivationState == UISceneActivationState.ForegroundActive && x is UIWindowScene) is UIWindowScene connectedScene) - window = new PopupWindow(connectedScene); + var connectedWindowScene = UIApplication.SharedApplication + .ConnectedScenes + .ToArray() + .FirstOrDefault(scene => + { + // The popup should only be displayed on a scene that displays interactive windows + // on the device’s built-in display or an externally connected display. + if (scene.Session?.Role != UIWindowSceneSessionRole.Application) + { + return false; + } + + return scene.ActivationState == UISceneActivationState.ForegroundActive + && scene is UIWindowScene; + }) as UIWindowScene; + + if (connectedWindowScene != null) + window = new PopupWindow(connectedWindowScene); else window = new PopupWindow();