[UIDevice cuurentDevice].ориентация, возвращающая предыдущие значения в обратном вызове appDidBecomeActive

Если я переведу приложение в фоновый режим, нажав кнопку «Домой», а затем изменю ориентацию устройства и переведу приложение на передний план, я все равно получу предыдущее значение ориентации устройства в [UIDevice currentDevice].orientation.

Например, я держу устройство в ориентации по умолчанию, вывожу приложение на задний план и поворачиваю устройство в ориентацию UpsideDown, затем вывожу приложение на передний план, при запросе deviceOrientation по-прежнему остается по умолчанию. Только через некоторое время вызывается прослушиватель для beginDeviceOrientationEvents, и становится доступным правильное значение.

Поэтому я хочу спросить, где должно быть первое место, чтобы получить правильное значение deviceOrientation при перезапуске приложения?


person Varun Bhatia    schedule 12.03.2012    source источник
comment
Вы пробовали: - (void)applicationDidEnterBackground:(UIApplication *)application //сохранить последнюю/текущую ориентацию - (void)applicationWillEnterForeground:(UIApplication *)application//получить последнюю ориентацию и сделать ее текущей ориентацией   -  person janusfidel    schedule 12.03.2012
comment
вы неправильно поняли проблему! я хочу получить правильное значение deviceOrientation, когда приложение выводится на передний план. Вместо того, чтобы получать текущую ориентацию устройства, я получаю ориентацию устройства, когда приложение было отправлено в фоновый режим.   -  person Varun Bhatia    schedule 12.03.2012


Ответы (1)


Используйте [[UIDevice currentDevice] orientation] (как описано в документации) в методе applicationDidBecomeActive вашего делегата приложения.

Обновить

На самом деле, [[UIApplication sharedApplication] statusBarOrientation] может быть более полезным, так как возвращаемое значение учитывает, с какими ориентациями вы установили совместимость своего приложения.

person Community    schedule 03.04.2012
comment
Вы пытались получить значение немного позже в цикле активации приложения? Я только что прочитал в Apple Состояния приложений и Многозадачность документ, что во время приостановки уведомления, такие как уведомления для ориентации, ставятся в очередь и отправляются, как только приложение снова становится активным. Возможно, уведомление об ориентации приходит после вызова applicationDidBecomeActive. - person ; 19.04.2012
comment
Да, я получил правильное значение позже в цикле приложения, но я ожидал, что оно будет правильным в appDidBecomeActive. - person Varun Bhatia; 19.04.2012