- (void)applicationWillResignActive :( UIApplication*)应用程序永远不会被调用

kid*_*lox 5 iphone cocoa-touch objective-c

我正在尝试处理电话和待机以及那种性质的事情.我添加了这个功能

- (void)applicationWillResignActive:(UIApplication *)application
Run Code Online (Sandbox Code Playgroud)

- (void)applicationDidBecomeActive:(UIApplication *)application
Run Code Online (Sandbox Code Playgroud)

到我的UIApplicationDelegate.当退出待机状态时,"applicationDidBecomeActive"总是被调用.但问题是"applicationWillResignActive"永远不会被调用.

我想知道是否有人遇到过这个问题以及是否有人找到了理由.

编辑

更多信息,我发现我的引擎的更新循环从applicationDidFinishLaunching运行导致我错过了该消息.我打电话

while(CFRunLoopRunInMode(kCFRunLoopDefaultMode, .002, FALSE) == kCFRunLoopRunHandledSource);
Run Code Online (Sandbox Code Playgroud)

捕获所有iphone消息但似乎在变为非活动状态之前没有捕获resignActive消息.

尝试为我的更新循环分叉线程会导致奇怪的崩溃错误.有人有任何快速解决建议吗?

Bir*_*chi 6

当主页按钮被击中时,它在iOS 4.0中被调用.

在iOS 4.0中按下主页按钮时,将调用以下委托方法

- (void)applicationWillResignActive:(UIApplication *)application
{
  NSLog(@"Application Did Resign Active");
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
  NSLog(@"Application Did Enter Background");
}
Run Code Online (Sandbox Code Playgroud)

当您双击主页按钮并再次重新启动应用程序时,将调用以下委托方法.

- (void)applicationWillEnterForeground:(UIApplication *)application
{
  NSLog(@"Application Will Enter Foreground");
}



- (void)applicationDidBecomeActive:(UIApplication *)application
{
  NSLog(@"Application Did Become Active");
}
Run Code Online (Sandbox Code Playgroud)