2011-02-15 2 views
0

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

Это, как я обработки 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, поэтому для меня это не имеет смысла.

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

+0

«Я использую тот же код для vc1 и vc1». Вы имеете в виду vc1 и vc3, верно? Возможно, вы захотите его отредактировать. –

+0

Да, спасибо, я имел в виду «vc1 и vc3», я отредактировал вопрос ... – bpatrick100

ответ

0

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

UIDeviceOrientation относится к ориентации устройства, err, и его следует сравнивать с константами UIDeviceOrientation ....

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

+0

Я использую shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation. поэтому, например, интерфейсОриентация сравнивается с UIInterfaceOrientationPortrait. – bpatrick100

Смежные вопросы