我的目标是让我的游戏优雅地处理暂时中断(电话,Siri,短信,点击主页按钮)。我知道delegate.m文件中的- (void)applicationWillResignActive:(UIApplication *)application
和- (void)applicationDidBecomeActive:(UIApplication *)application
是必要的。但是我不知道如何完成这项任务。我的游戏正在NSTimer
上运行,我还有一个“得分”计时器,背景音乐和暂停和播放按钮。
我检查了答案,但没有,并且有明确的解释。我也看到了不寻常的选择。我想知道完成这项工作的最佳编程实践。我是编程的新手,所以非常感谢明确而精确的解释(带代码)。
谢谢。 :)
答案 0 :(得分:1)
我们假设您的暂停按钮与-(IBAction)pauseButtonClicked {
然后使用:
- (void)applicationWillResignActive:(UIApplication *)application {//or whatever method you are using
[self pauseButtonClicked];
}
答案 1 :(得分:1)
在你的AppDelegate.m中,在willResignActive上发布通知:就像这样。
- (void)applicationWillResignActive:(UIApplication *)application {
[[NSNotificationCenter defaultCenter] postNotificationName:@"willResignActive" object:nil userInfo:nil];
}
然后,如果需要,您可以添加如下所示的观察者。现在,只要应用程序离开前景,就会调用viewController的pauseButtonClicked方法。
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pauseButtonClicked:) name:@"willResignActive" object:nil];
}
不要忘记在不再需要时移除观察者。
-(void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"willResignActive" object:nil];
}