2011-02-15 17 views
0

ナビゲーションコントローラ階層に3つのView Controllerがあるとします。View Controllerが正しい向きで表示されない

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

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

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

だから、私の最初のビューコントローラVC1は、ポートレートモードで表示されます。私はすべての3つのビューコントローラのshouldAutorotateToInterfaceOrientation:メッセージを処理していますか

はこれがあります。デバイスが回転している場合、何も起こりませんが正しいです。その後、vc2をスタックにプッシュし、最初はポートレートで表示されます。デバイスを回転させて、vc2が横長モードになりますが、これは正しいです。 VC2のための風景モードでは、残っている間、私は、スタックオフVC2をポップし、VC1、およびは、ポートレートモードで表示されVC1に戻って - も正しいです。

ここに問題があります。

VC1VC2に肖像画、ポップに表示され、景観ビューを表示するように回転しています。次に、ポートレートのみをサポートしていても、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を使用しています。したがって、例えば、interfaceOrientationはUIInterfaceOrientationPortraitと比較されています。 – bpatrick100

関連する問題