iPhone applicationWillResignActive - 如何通知当前UIView

发布于 2025-01-05 02:50:45 字数 89 浏览 0 评论 0原文

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

I want to pause a timer on my game screen when the iPhone is locked etc. My question is what is the best method to notify the current UIView, which the AppDelegate has no direct access to?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浮光之海 2025-01-12 02:50:45

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

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

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

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

这种方法很好地将您的应用程序委托与视图和视图控制器解耦。

(哦,当你的视图被卸载或释放时,不要忘记停止观察。不这样做可能会导致崩溃。)

1) Your timer should probably not be managed by the view but by the view's controller. The timer itself is not an inherent part of your UI, only the timer's display is. (What happens if you want to have the timer continue after a view is removed, for example?)

2) Any object (view or controller included) can independently listen for the appropriate notification. For example, in your view controller (or view code, if you choose to go that route):

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

Then implement a pauseTheTimer: method that will handle the notification. (Since there is only one UIApplication object, you can use nil for the object, as shown.)

This approach nicely decouples your app delegate from the views and view controllers.

(Oh, don't forget to stop observing when your view is unloaded or deallocated. Failure to do so can and will lead to crashes.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文