Предотвращение появления конфиденциальной информации в переключателе задач - код Apple не работает - глюк iOS 8?
Этот документ: Предотвращение появления конфиденциальной информации в переключателе задач описывает способ представления контроллера представления в applicationDidEnterBackground, чтобы скрыть важную информацию в переключателе задач:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
// Your application can present a full screen modal view controller to
// cover its contents when it moves into the background. If your
// application requires a password unlock when it retuns to the
// foreground, present your lock screen or authentication view controller here.
UIViewController *blankViewController = [UIViewController new];
blankViewController.view.backgroundColor = [UIColor blackColor];
// Pass NO for the animated parameter. Any animation will not complete
// before the snapshot is taken.
[self.window.rootViewController presentViewController:blankViewController animated:NO completion:NULL];
}
Тем не менее, в iOS 8 этот точный код не работает, и очень простой, простой, черный контроллер представления не отображается до тех пор, пока приложение снова не станет активным. Переключатель задач показывает конфиденциальную информацию и ничего не скрывается. В этом коде нет анимации, поэтому я не могу понять - почему это происходит?
1 ответ
В iOS 8 приложению не хватает времени для отображения контроллера представления перед тем, как сделать снимок экрана.
Исправление, которое работает для меня, заключается в том, чтобы просто ввести небольшой цикл выполнения в конце applicationDidEnterBackground.
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UIViewController *blankViewController = UIViewController.new;
blankViewController.view.backgroundColor = UIColor.blackColor;
[self.window.rootViewController presentViewController:blankViewController animated:NO completion:NULL];
[NSRunLoop.currentRunLoop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.5]];
}