2

メインウィンドウに2つのサブビューがあるiPhoneアプリケーションを作成しようとしています。各ビューには、独自のUIViewControllerサブクラスが関連付けられています。また、各コントローラーの実装内に、次のメソッドを追加しました。

-(BOOL)shouldAutorotateToInterfaceOrientation:
 (UIInterfaceOrientation)interfaceOrientation {
    return YES;
   }

したがって、私は両方の見解が方向の変化に対応することを期待します。ただし、そうではありません。アプリのメインウィンドウに追加された最初のビューのみが向きに反応します。(ビューが追加される順序を入れ替えると、他のビューのみが応答します。つまり、どちらも機能しますが、一度に1つだけです。)

どうしてこれなの?複数のビューの向きの変更を処理することはできませんか?

ありがとう!

編集:他の誰かがこの質問をしたので、私はここに私の解決策をコピーしています:

ルートビューとルートビューコントローラーにメソッド「shouldAutoRotate...」を提供し、他のビューをサブビューとしてルートビューに追加することで、この問題に対処することができました。サブビューは自動回転動作を継承し、関連するビューコントローラーは「shouldAutoRotate...」をオーバーライドする必要はありません。

4

3 に答える 3

2

最後に私の解決策をここに投稿します:

基本的に、それは「ルート」UIViewControllerを持つことになりました。これには、次の方法があります。

-(BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation {
        return YES;
}

また、自動回転させたいビューをサブビューとしてこのルートUIViewContollerのUIViewに追加しました。これらのサブビューにもビューコントローラがありますが、オーバーライドしませshouldAutorotateToInterfaceOrientation。実際、これらのView Controllerにこのメソッドを追加しても、何の効果もないようです。ルートビューコントローラーのみがshouldAutorotateToInterfaceOrientation機能しているようで、すべてのサブビューが適切に回転されます。

于 2010-03-06T00:58:18.060 に答える
2

使用している3つのコントローラーすべてでshouldAutorotateToInterfaceOrientationメソッドをオーバーライドする必要があります。

于 2009-12-23T20:08:24.553 に答える
0

このメソッドをクラスに実装してみることができます。このビューには、viewControllerの両方のビューが含まれています。

于 2009-12-23T18:40:12.853 に答える