作者: | 来源:互联网 | 2023-09-02 17:59
让我们说:
- 我们有一个应用程序,我们在当前屏幕上有一个弹出窗口:
- 我们点击 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];
}
}