Я хочу заблокировать пользователей от моего приложения после периода нахождения в фоновом режиме. Я ловлю это в AppDelegate applicationWillEnterForeground
(и сравниваю со временем, хранящимся в applicationWillResignActive
). Если время меньше тайм-аута, никаких действий не происходит. Если больше, чем период ожидания, я звоню:
[_navigationController popToRootViewControllerAnimated:NO];
который возвращает пользователя к корневому представлению.
Он отлично работает с одним визуальным прерыванием. Предыдущее представление (то, которое просматривал пользователь, когда приложение стало неактивным) появляется очень ненадолго, прежде чем перейти к корневому каталогу. При тестировании кажется, что представление снова появляется до вызова applicationWillEnterForeground
.
Единственная мысль, которая у меня была, - скрыть все, прежде чем перейти в неактивное состояние, например, скрыть вид заполненным прямоугольником. Для меня это пахнет грязным взломом, поэтому я думаю, что есть лучший способ.
Я также открыт для различных способов достижения одного и того же конечного результата. Спасибо!
[_navigationController popToRootViewControllerAnimated:NO]
в методеapplicationWillEnterForeground
делегата приложения. - person Mitch Cohen   schedule 24.05.2011applicationWillResignActive
у меня есть_navigationController.view.alpha=0;
, и я поместил_navigationController.view.alpha=100;
вapplicationWillEnterForeground
после (при необходимости) появления окна входа в систему. Проще, чем извлекать и восстанавливать представления (которые в данном случае довольно тяжелы). Я оставлю это открытым на время, если у кого-то есть решение поставленного вопроса. - person Mitch Cohen   schedule 25.05.2011