Предположим, у меня есть три контроллера представления в иерархии контроллеров навигации.
Вот как я обрабатываю сообщение 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, поэтому для меня это не имеет смысла.
Любая помощь будет принята с благодарностью!