iPhone applicationWillResignActive - 如何通知当前的UIView

时间:2012-02-12 09:13:16

标签: iphone objective-c uikit

当iPhone被锁定时,我想在我的游戏屏幕上暂停一个计时器等等。我的问题是通知当前UIView的最佳方法是什么,AppDelegate无法直接访问它?

1 个答案:

答案 0 :(得分:3)

1)您的计时器可能不应由视图管理,而是由视图的控制器管理。计时器本身不是UI的固有部分,只有计时器的显示。 (例如,如果您希望在删除视图后继续使用计时器,会发生什么情况?)

2)任何对象(包括视图或控制器)都可以独立监听适当的通知。例如,在视图控制器中(或视图代码,如果您选择转到该路径):

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

然后实现一个pauseTheTimer:方法来处理通知。 (由于只有一个UIApplication对象,因此可以使用nil作为对象,如图所示。)

这种方法很好地将您的app委托与视图和视图控制器分离。

(哦,不要忘记在卸载或取消分配视图时停止观察。如果不这样做会导致崩溃。)