Контроллеры представления не отображаются в правильной ориентации - PullRequest
0 голосов
/ 15 февраля 2011

Предположим, у меня есть три контроллера представления в иерархии контроллеров навигации.

Вот как я обрабатываю сообщение shouldAutorotateToInterfaceOrientation: для всех трех контроллеров представления:

vc1:
{    return (interfaceOrientation == UIInterfaceOrientationPortrait);}

vc2:
{    return (interfaceOrientation == UIInterfaceOrientationPortrait 
  || interfaceOrientation == UIInterfaceOrientationLandscapeLeft
  || interfaceOrientation == UIInterfaceOrientationLandscapeRight);}

vc3:
{    return (interfaceOrientation == UIInterfaceOrientationPortrait);}

Итак,мой начальный контроллер вида vc1 отображается в портретном режиме.Если устройство поворачивается, ничего не происходит, что правильно.Затем я помещаю vc2 в стек, и он первоначально отображается в портретной ориентации.Я поворачиваю устройство, и vc2 переходит в альбомный режим, что правильно.Оставаясь в ландшафтном режиме для vc2 , я вытаскиваю vc2 из стека и возвращаюсь к vc1 , и vc1 отображается впортретный режим - это тоже правильно.

Так что теперь вот проблема.

vc1 Отображается в портретной, всплывающее на vc2 и поверните, чтобы увидеть альбомную ориентацию.Затем перейдите к vc3 и vc3 слайд в ландшафтном режиме, даже если он поддерживает только портрет.

Понятия не имею, почему это происходит или как с этим бороться.Другими словами, когда вы возвращаетесь к vc1, он автоматически отображается только в портретной ориентации, но vc3 автоматически показывает в любой ориентации, которую использовал предыдущий vc.Но вы можете видеть, что я использую один и тот же код для vc1 и vc3, поэтому для меня это не имеет смысла.

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 15 февраля 2011

Как вы на самом деле определяете ориентацию устройства?

UIDeviceOrientation относится к ориентации устройства с ошибкой и должно сравниваться с константами UIDeviceOrientation ....

UIInterfaceOrientation относится к ориентации интерфейса. Он определяется путем чтения ориентации строки состояния и должен сравниваться с UIInterfaceOrientation.

...