Контроллер модального представления неправильно вращается в iOS 5.1, а не в 5.0

У меня есть контроллер основного вида, который находится в альбомной ориентации (все приложение находится в альбомной ориентации влево/вправо).

Этот основной вид представляет собой модальный вид, используя:

ModalViewController *modalVC = [[ModalViewController alloc] init];
[modalVC setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self presentModalViewController:modalVC animated:YES];

В iOS 5.0* это работает именно так, как я и ожидал: основной вид находится в альбомной ориентации, а модальный вид — в альбомной.

В iOS 5.1 основной вид мгновенно поворачивается на 90º влево, а модальный вид также поворачивается на 90º и обрезается. Когда модальный вид закрывается, возвращается основной вид, нормальный и в альбомной ориентации.

Я пробовал все виды мутаций shouldAutorotateToInterfaceOrientation, и это не дало никакого эффекта. Я пока оставил так:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight) || (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}

Я просто не могу понять это, у меня никогда не было проблем, пока я не установил iOS 5.1 на свой iPhone и не запустил приложение в первый раз на нем.

Заранее спасибо!

*Подтверждено с помощью симуляторов iPhone 5.0 и 5.1.


person REDMX    schedule 14.03.2012    source источник
comment
Только что обнаружил, что в iOS 5.1 shouldAutorotateToInterfaceOrientation в родительском элементе вызывается снова при появлении модального представления и все портит. В версии 5.0 метод не вызывается после первого появления родителя.   -  person REDMX    schedule 15.03.2012


Ответы (1)


Убедитесь, что вы показываете контроллер модального представления (без анимации), и прежде чем делать это:

[window makeKeyAndVisible]

Так позвони

[uiviewcontroller presentViewController:modalViewController animated:NO completion:nil];
[window makeKeyAndVisible];
person RPM    schedule 18.04.2012