我想在推送通知(推送,短信)出现时调用我的暂停方法。
首先,游戏的概念: 当您启动应用程序时,会显示一个主视图,您可以在其中选择三种不同游戏模式中的一种。 因此,如果用户在一种游戏模式下玩并获得短信,则游戏应该暂停,如果他取消通知,游戏应该继续。
三种不同模式的viewcontrollers的名称是PlayViewController,PlayTwoViewController和TimePlayViewController。
所以,这是我的appDelegate:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
// Add the view controller's view to the window and display.
[self.window addSubview:viewController.view];
[self.window makeKeyAndVisible];
return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application { [PlayViewController pauseGame]; [PlayTwoViewController pauseGame];[TimePlayViewController pauseGame]; }
- (void)applicationDidEnterBackground:(UIApplication *)application {
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
}
-(void)applicationDidBecomeActive:(UIApplication *)application { [PlayViewController pauseGame]; [PlayTwoViewController pauseGame];[TimePlayViewController pauseGame]; }
- (void)applicationWillTerminate:(UIApplication *)application {
}
pauseGame方法总是一样的。代码是:
-(IBAction)pauseGame {
[myTimer invalidate];
PauseViewController *screen = [[PauseViewController alloc] initWithNibName:nil bundle:nil];
screen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:screen animated:YES];
[screen release]; }
myTimer只是一个NSTimer。
当我使用上面的代码构建它时,应用程序崩溃了 控制台说:
2011-04-03 11:22:10.091 appName [458:207] + [PlayViewController pauseGame]:无法识别的选择器发送到类0x1d39c 2011-04-03 11:22:10.093 appName [458:207] * 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'+ [PlayViewController pauseGame]:无法识别的选择器发送到类0x1d39c' 抛出'NSException'实例后调用终止
答案 0 :(得分:2)
实施:
- (void)applicationWillResignActive:(UIApplication *)application
“调用此方法是为了让您的应用程序知道它将从活动状态转为非活动状态。这可能发生在某些类型的临时中断(例如来电或SMS消息)或用户退出应用程序,它开始转换到后台状态。处于非活动状态的应用程序继续运行,但不会将传入的事件分发给响应者。
您应该使用此方法暂停正在进行的任务,禁用计时器,并降低OpenGL ES帧速率。游戏应该使用这种方法暂停游戏。处于非活动状态的应用程序在等待转换为活动状态或后台状态时应该执行最少的工作。“