gpt4 book ai didi

iphone - 如何删除 _UIAlertNormalizingOverlayWindow

转载 作者:可可西里 更新时间:2023-11-01 04:44:40 29 4
gpt4 key购买 nike

在我的应用程序中,当应用程序进入后台时,我需要删除窗口中可见的所有警报。但问题是,我不想用

关闭它
[alert dismissWithClickedButtonIndex:0 animated:YES]

因为,它会触发 clickedButtonAtIndex 委托(delegate)并调用一个方法。我不想在应用程序进入后台时避免这种情况。

我通过使用以下代码从 windowsubViews 中删除 alertView 成功地做到了这一点

  for (UIWindow *window in [UIApplication sharedApplication].windows) {
for (UIView *view in [window subviews]) {
if ([view isKindOfClass:[UIAlertView class]]) {
[view removeFromSuperview];
}

}

但问题是 _UIAlertNormalizingOverlayWindow 仍然存在,它阻止了用户交互。我还需要从我的窗口中删除 _UIAlertNormalizingOverlayWindow。请帮助我做到这一点,或者请提出任何替代方案来实现解决方案。

最佳答案

尽管这不是一个非常干净的解决方案(假设 ivar BOOL _backgroundAlertFlag

- (void)applicationDidEnterBackground:(UIApplication *)application {
_backgroundAlertFlag = YES;

// find your UIAlertView as you are doing already

[alert dismissWithClickedButtonIndex:0 animated:NO];
_backgroundAlertFlag = NO;
}

然后在您的 UIAlertViewDelegate 方法中:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if( !_backgroundAlertFlag )
{
// handle alert processing normally here
}
// other wise ignore (just dismiss)
}

关于iphone - 如何删除 _UIAlertNormalizingOverlayWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9701675/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com