进入后台时检查 UIAlertView 的实例

Posted

技术标签:

【中文标题】进入后台时检查 UIAlertView 的实例【英文标题】:Check instance of UIAlertView when going in background 【发布时间】:2013-12-05 12:02:56 【问题描述】:

我已针对此问题参考了以下链接,但没有一个解决方案对我有用:

Link 1

Link 2

我认为这些解决方案不适用于 ios7。

那么,当我的应用程序进入后台状态时,我现在如何才能知道是否有任何UIAlertView 打开。 我想在进入后台之前关闭UIAlertView

【问题讨论】:

两个链接相同。删除任何 1 个链接 我已经更改了第二个链接。 【参考方案1】:

删除 applicationDidEnterBackground 中的警报

在你的类中添加这一行

[[NSNotificationCenter defaultCenter] addObserver: self
                                         selector: @selector(enteredBackground:) 
                                            name:UIApplicationDidEnterBackgroundNotification
                                               object: nil];

还有实现方法

- (void)enteredBackground:(UIApplication *)application
    
        if (mainAlertView && mainAlertView.isVisible) 
                 [mainAlertView dismissWithClickedButtonIndex:0 animated:NO];
    

【讨论】:

【参考方案2】:

当应用程序发送到后台时您会收到通知,因此在显示警报视图的类中检测该通知并将其删除,仅此而已

【讨论】:

你能详细说明一下,如何检测特定类的背景通知 @KananVora 您可以在要接收通知的特定 viewController 中注册 UIApplicationDidEnterBackgroundNotification。【参考方案3】:

您是否检查过 UIAlertView 属性 @property(nonatomic, readonly, getter=isVisible) BOOL visible 此外,在后台运行时,您会在 - (void )applicationDidEnterBackground: 中收到通知,您可以在那里检查并删除所有警报视图(如果有)

【讨论】:

以上是关于进入后台时检查 UIAlertView 的实例的主要内容,如果未能解决你的问题,请参考以下文章

获取 JSON 失败时的 UIAlertView [重复]

当应用程序关闭或在后台运行时弹出 UIAlertView 窗口

在 UI 自动化测试中解除警报时未调用 UIAlertView 的委托方法“clickedButtonAtIndex”

iOS 在显示另一个之前关闭 UIAlertView

iPhone 应用程序在从后台进入前台时会挂起/阻止 UI 几秒钟

如何在 iOS 7 中以编程方式正确关闭 UIAlertView?