Не знаю, как вы получаете уведомление об изменении ориентации, но я использую - (void) directionChanged: (NSNotification *) уведомление. Это обновляется, по крайней мере, в симуляторе быстрее, чем дважды в секунду, что для меня достаточно быстро.
Ах да, у меня были проблемы с этим. В примере приложения яблок или их доко (я не могу вспомнить) он использует:
- (void) ОриентацияChanged: (NSNotification *) уведомление
{
[self executeSelector: @selector (updateLandscapeView) withObject: nil afterDelay: 0];
}
Чем вы создаете метод, который делает
- (void) updateLandscapeView {
if (UIDeviceOrientationIsLandscape (deviceOrientation) &&! isShowingLandscapeView)
{
[self presentModalViewController: scheduleMonth animated: YES];
isShowingLandscapeView = YES;
} else if (deviceOrientation == UIDeviceOrientationPortrait && isShowingLandscapeView)
{
[self dismissModalViewControllerAnimated: YES];
isShowingLandscapeView = NO;
}
}
Я поместил свою альбомную ориентацию в отдельный класс, который вызывается в updateLandscapeView
Если у вас сложный ландшафтный вид, вы можете, возможно, загрузить его из потока, а если он вернется к портретному режиму, остановить поток и закрыть вид. Пользователь может не получить альбомную ориентацию, если он делает это быстро, но это означает, что он не получит глюков или застрянет в альбомной или портретной ориентации.