2

MainViewControllerに次のメソッドがあります。

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    NSLog(@"MAIN CONTAINER WILL ANIMATE");
    [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
}

そして、回転すると、NSLogが表示され、すべてが完璧になります。ただし、MainViewControllerからmodalViewControllerを提示してから回転すると、NSLogが表示されなくなり、MainViewControllerはデバイスが回転したことを認識しないため、modalViewを閉じると、インターフェイスは回転に合わせて調整されません。

モーダルビューが親が回転の更新を受信できないようにする理由についてのアイデアはありますか?これは典型的なことですか、それとも私の設定に何か問題があるはずですか?

念のため、を介してmodalViewControllerをサブビューとして表示しようとしましたが[mainViewController.view addSubview:modalView.view]、回転の更新が適切に有効になりました。[mainViewController presentModalViewController:modalViewController];更新が有効にならないのは、私がそうするときだけです。

4

3 に答える 3

4

確かに、View Controllerがモーダルで表示されている場合、他のViewControllerはメッセージをまったく受信しません。これが、このコンテキストでのモーダルの意味です。

明らかな解決策は、モードレスViewControllerのviewWillAppearメソッドで方向を確認することです。

于 2012-04-13T13:43:19.913 に答える
1

以下の実装を確認する必要があります。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Overriden to allow any orientation. 
    return YES;
 }

両方のビューで。

于 2012-04-13T13:38:27.477 に答える
0

viewWillAppearで現在のインターフェイスの向きにレイアウトを調整する必要があります。明らかに、ビューが表示されていないため、モーダルビューコントローラが起動している間はアニメーション関数は呼び出されません。

于 2012-04-13T13:52:34.127 に答える