当应用程序返回前台时删除任何弹出窗口

让我们说:

  • 我们有一个应用程序,我们在当前屏幕上有一个弹出窗口:
  • 我们点击 iPad 上的主页按钮,应用程序进入后台
  • 我们再次打开应用程序打开应用程序时,将出现弹出窗口。

这似乎是默认行为。请参阅日历应用程序下方,我们从弹出窗口开始,转到后台,打开应用程序时,弹出窗口仍然存在。

现在,我希望在打开应用程序时不存在弹出窗口(请不要问为什么,这是一个业务查询)。我设法删除了将此代码放在方法中的任何弹出窗口

- (void)applicationWillEnterForeground:(UIApplication *)application {

  NSArray         *windows = [[UIApplication sharedApplication]windows];
    for (UIWindow   *window in windows) {
        if (window.windowLevel == 2000) {
            window.hidden = YES;
            if (@available(iOS 13.0, *)) {
                window.windowScene = nil;
            }
            
        }

    }
}

它工作正常,在返回前台时删除任何弹出窗口,但代码非常笨拙,并且依赖于具有 2000 的 windowAlert 级别的弹出窗口 UIWindow。

有更好的方法(更少的hacky)来删除popover?

回答

尝试这个:

- (void)applicationWillEnterForeground:(UIApplication *)application {
    UIViewController *vc = self.window.rootViewController;
    while (vc.presentedViewController) {
        vc = vc.presentedViewController;
        [vc dismissViewControllerAnimated:false completion:nil];
    }
}


以上是当应用程序返回前台时删除任何弹出窗口的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>