UIAlertView 隐藏/删除时调用的通知或委托

Posted

技术标签:

【中文标题】UIAlertView 隐藏/删除时调用的通知或委托【英文标题】:Notification or delegate called when UIAlertView is hidden/removed 【发布时间】:2014-04-05 19:59:44 【问题描述】:

我正在尝试查找隐藏或显示警报视图时调用的委托/协议甚至通知。这些事件会触发我可以监听的通知或回调吗?

我知道 UIAlertView 协议,但这不是我想要的,我正在寻找实际的显示和隐藏事件以在完成后执行操作。

这存在吗?

【问题讨论】:

Can I get message when I show UIAlertView的可能重复 希望我的回答能帮到你一点 【参考方案1】:

如果您想了解您自己展示的 AlertView,您正在寻找 UIAlertViewDelegate 协议

didPresentAlertView:alertView:didDismissWithButtonIndex:

如果您想知道操作系统何时显示 AlertView,您可以尝试UIWindow class reference 中的UIWindowDidBecomeVisibleNotificationUIWindowDidBecomeHiddenNotification,然后检查windowLevel 属性是否等于UIWindowLevelAlert

【讨论】:

我认为这意味着,当他说“我知道 UIAlertView 协议,但这不是我要找的” @lootsch 更新了我的答案 谢谢 didbecomvisible 通知隐藏通知是我正在寻找的... 是否有关于发送通知的更统一的文档?我假设存在这一点,以及我需要的其他通知,但查找有关它们的文档充其量似乎是偶然的。 @user282172 : UIWindowDidBecomeVisibleNotification & UIWindowDidBecomeHiddenNotification 不是UIAlertView 特定通知。它们是UIWindow 特定的,因此这些通知将在应用程序显示/隐藏时发布,即应用程序启动/应用程序进入后台/应用程序进入前台。它与 alertView 的显示或隐藏无关。 这只是一种间接的检查方式。有没有UIAlertView通知(请不要在不了解具体细节的情况下否决答案 我对您的回答投了反对票,因为您显然没有阅读我的问题。当我在我的问题中明确指出我知道它并且它没有提供我所寻求的东西时,你引用了 UIAlertView 协议作为答案。【参考方案2】:

检查NSNotifications 的一种简单方法是将该代码添加到您的AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

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

    return YES;


-(void)notification:(NSNotification*)notification

    NSLog(@"Notification name is %@, \n sent by %@\n\n",[notification name], [[notification object] description] );

我测试了触发 UIAlertViews 的这段代码,但我从未收到与此相关的 NSNotification。 所以可能没有与UIAlertViews相关的NSNotification

【讨论】:

以上是关于UIAlertView 隐藏/删除时调用的通知或委托的主要内容,如果未能解决你的问题,请参考以下文章

推送通知进入时调用的方法序列

仅在应用处于后台时调用的静默通知回调方法

显示和隐藏 uisearchcontroller 时调用的函数

Android Fragment 隐藏或显示时调用的生命周期方法

如果显示 UIAlertView,iOS 上是不是有通知?

在目标中隐藏 UIAlertView -c