0

一部のviewControllerが使用されているアプリケーションに取り組んでいます。ランドスケープ/ポートレートモードであるビューから別のビューにプッシュし、同じモードで戻ると、戻るときに呼び出されるshouldAutorotateToInterfaceOrientationメソッド。

ただし、同じ手順を繰り返し、2番目または3番目のビューで方向を変更して戻ると、shouldAutorotateToInterfaceOrientationメソッドが呼び出されません。とビューコントロールが乱れました。

同じ固溶体を与えてください。

ありがとう、

4

1 に答える 1

1

私があなたの質問を正しく理解しているなら、デバイスの向きが変わったときに、viewControllersのスタックの2番目または3番目のviewControllerでshouldAutorotateToInterfaceOrientationが呼び出されるようにします。

shouldAutorotateToInterfaceOrientationは、上部のviewControllerでのみ呼び出されます。2番目または3番目のviewControllerのメソッドでレイアウトコードを実行すると、コードは実行されません。

コードに応じて、ソリューションはシンプルで多くあります。これが機能するはずです(Xcodeではテストされていません)。トップViewControllerのshouldAutorotateToInterfaceOrientationメソッドに、次のようなものを追加します。

for (UIViewController *vc in [self childViewControllers])
{ 
    [vc shouldAutorotateToInterfaceOrientation];
}

特定のchildViewControllerへのポインターがある場合は、それを具体的に呼び出すことができます。

ドキュメントからのメモ:

このメソッドの実装は、interfaceOrientationパラメーターの値に基づいてYESまたはNOを返す必要があります。interfaceOrientationプロパティの値を取得したり、UIDeviceクラスによって報告された方向の値を確認したりしないでください。ビューコントローラは、特定の方向をサポートできるか、サポートしていないかのどちらかです。

任意のレイアウトを行うには、次を使用できます。

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation

お役に立てれば!

于 2012-05-06T15:05:03.033 に答える