我已经使用了:
(void)applicationDidEnterBackground:(UIApplication *)application {}
方法,但我无法区分是因为按下主页按钮或开/关按钮。
提前致谢,
答案 0 :(得分:3)
对于开/关按钮(或来电或短信):
- (void)applicationWillResignActive:(UIApplication *)application
对于主页按钮:
- (void)applicationDidEnterBackground:(UIApplication *)application
答案 1 :(得分:1)
在applicationWillResignActive
的通知中,当您在后台输入时,applicationDidBecomeActive
仍然会输入。但是有一种方法可以通过获取应用的状态进行区分,因此请在applicationDidEnterBackground
中进行尝试。
- (void)appHasGoneInBackground {
bool inBackground = [UIApplication sharedApplication].applicationState == UIApplicationStateBackground;
// lockScreen state
if (!inBackground) {
// do something
}
}
答案 2 :(得分:0)
当您的应用进入后台(主页按钮)时使用- (void)applicationDidEnterBackground:(UIApplication *)application {}
,当它即将关闭时使用- (void)applicationWillTerminate:(UIApplication *)application
(开启/关闭按钮或在后台随机时间后关闭iOS通话)。
答案 3 :(得分:0)
我的理解是,当您锁定或解锁iOS设备时,您的应用程序代表将分别致电- (void)applicationWillResignActive:(UIApplication *)application
和- (void)applicationDidBecomeActive:(UIApplication *)application
。锁定和解锁类似于接收像电话那样的中断。通过点击主页按钮将您的应用程序发送到后台会调用不同的方法,即- (void)applicationDidEnterBackground:(UIApplication *)application
和- (void)applicationWillEnterForeground:(UIApplication *)application
。