如何从任何地方对applicationWillResignActive做出反应?

时间:2009-02-26 08:06:43

标签: iphone

在iphone应用程序的任何位置订阅applicationWillResignActive等活动的代码是什么?

[UPDATE]

让我重新解释一下我的问题。我不想在我的应用程序委托中对此做出响应,而是从另一个类中听取此事件。这是可能的还是我需要将事件从应用程序委托传递给相关的类?

4 个答案:

答案 0 :(得分:75)

看起来您正在寻找此代码。

- (void) applicationWillResign {
    NSLog(@"About to lose focus");
}

- (void) myMethod { 
    [[NSNotificationCenter defaultCenter]
        addObserver:self
        selector:@selector(applicationWillResign)
        name:UIApplicationWillResignActiveNotification 
        object:NULL];
}

答案 1 :(得分:12)

查看您正在讨论的方法的文档:

<强> applicationWillResignActive:

告诉代理该应用程序将变为非活动状态。这个方法是可选的。

- (void)applicationWillResignActive:(UIApplication *)application

[...]

讨论

[...]

在它变为非活动状态之前,该应用程序还会发布 UIApplicationWillResignActiveNotification

答案 2 :(得分:4)

在您的应用程序委托中实现以下方法:

-(void)applicationWillResignActive:(UIApplication *)application

这允许您在应用程序变为非活动状态时做出反应 - 在这种情况下,它正在执行但不会调度传入事件。例如,当弹出覆盖窗口或设备被锁定时会发生这种情况。

在它变为非活动状态之前,该应用程序还会发布UIApplicationWillResignActiveNotification。

答案 3 :(得分:0)

您的主题和问题要求略有不同。

您的应用程序将自动接收applicationWillResignActive以及applicationWillTerminate。无需订阅,只需在您的应用中实现该功能。

至于如何回应,这取决于应用程序。虽然您可以选择不执行任何操作,但建议的行为是停止或减慢任何非关键功能。例如。如果你是一个游戏,你将停止更新显示和/或暂停游戏。