进入后台时检查 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 的实例的主要内容,如果未能解决你的问题,请参考以下文章
当应用程序关闭或在后台运行时弹出 UIAlertView 窗口
在 UI 自动化测试中解除警报时未调用 UIAlertView 的委托方法“clickedButtonAtIndex”