如何模拟applicationWillResignActive消息?

时间:2011-11-21 03:01:56

标签: objective-c cocoa-touch nsnotifications

如何模拟applicationWillResignActive被调用?

锁定屏幕,进入主菜单,模拟电话呼叫 - 似乎都没有帮助。

如果我发现不会发生的事情,让我告诉你更多:我订阅了这条消息,当发生这种情况时,希望通知发送到下面列出的方法:

UIApplication *app = [UIApplication sharedApplication];

[[NSNotificationCenter defaultCenter] addObserver:self 
                 selector:@selector(applicationWillResignActive:) 
                 name: UIApplicationWillResignActiveNotification object:app];

1 个答案:

答案 0 :(得分:1)

您的代码有效,对我有用。锁定屏幕或点击主页按钮将导致发布此通知。

*(有一点需要注意的是,如果您的设备不支持多任务处理,或者您的Application does not run in background中的“*info.plist”属性设置为“是”。在这种情况下,它会直接转到“UIApplicationWillTerminateNotification”通知)

因此,除非有两种可能性:

1)您的addObserver代码未被调用,即。这是错误的方法。

试试这个:

UIApplication *app = [UIApplication sharedApplication];
[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(applicationWillResignActive:) 
                                             name:UIApplicationWillResignActiveNotification 
                                           object:app];
NSLog(@"Observer added");

2)没有正确调用观察者方法。这需要与at选择器相同的方法。

试试这个:

-(void)applicationWillResignActive:(NSNotification *)notification{
    NSLog(@"applicationWillResignActive");
}
  • 另外一点,如果您想查看这些通知中的哪些通知以及何时通知。在AppDelegate类中,将NSLog(@"%@", NSStringFromSelector(_cmd));行放在每个-application...方法中,并在调用它们时记录它们。这是了解他们的好方法。