Я нашел лучший способ сделать это.
Различать блокировку экрана и нажатие кнопки «Домой» на iOS7
Это может помочь вам как на iOS5, так и на iOS6 и на устройстве iOS7 :). Но на iOS Simulator это не сработает.
Вы можете получить [[UIApplication sharedApplication] applicationState]
, чтобы определить, является ли это экраном блокировки или кнопкой возврата домой с помощью UIApplicationStateInactive
и UIApplicationStateBackground
до iOS7.
Но в iOS7 они стали одним и тем же состоянием UIApplicationStateBackground
, и вы можете судить об этом по яркости экрана.
Яркость экрана должна быть равна 0, когда в состоянии блокировки экрана;в противном случае это состояние кнопки «Домой».
Вы можете поместить фрагмент кода в - (void)applicationDidEnterBackground:(UIApplication *)application
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UIApplicationState state = [[UIApplication sharedApplication] applicationState];
if (state == UIApplicationStateInactive) {
NSLog(@"Sent to background by locking screen");
} else if (state == UIApplicationStateBackground) {
CGFloat screenBrightness = [[UIScreen mainScreen] brightness];
NSLog(@"Screen brightness: %f", screenBrightness);
if (screenBrightness > 0.0) {
NSLog(@"Sent to background by home button/switching to other app");
} else {
NSLog(@"Sent to background by locking screen");
}
}
}