3

メインのView Controllerの上に表示されるモーダルView Controller(ポップアップView Controllerと呼びましょう)があります。ある時点で、ポップアップの背後にあるメイン ビュー コントローラーを確認する必要があります。したがって、 ポップアップ ビュー コントローラーを表示する前にmodalPresentationStyleプロパティをに設定します。UIModalPresentationCurrentContext

そのため、ポップアップ ビュー コントローラーがモーダルに表示されている間にデバイスの向きが変わると、 メソッドwillRotateToInterfaceOrientation:didRotateFromInterfaceOrientation:メソッドは呼び出されません。supportedInterfaceOrientationsamd は適切な値を返します。回転が有効になり、サポートされている方向が正しく設定されます。'modalPresentationStyle' をデフォルト値に変更すると、ポップアップ conIt は実際に機能します。背後にメイン ビュー コントローラーが表示されないことを除いて、すべて正常に機能します。

メインのビュー コントローラーはポートレートのみをサポートし、その上のポップアップはすべての向きをサポートしていることを付け加えておきます。

iOS 5.1 デバイスでは、 メソッドwillRotatedidRotateメソッドが正しく呼び出されます。そうでないのは iOS 6 デバイスだけです。

誰かが同様の問題に遭遇したか、または単一の方向ビュー コントローラーの上にモーダルで透明な多方向ビュー コントローラーを表示する必要がありましたか?

4

1 に答える 1

0

これを行う...

- (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation {
    UIDevice* thisDevice = [UIDevice currentDevice];
    if (thisDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad)
    {
        return true;
    }
    else
    {
        return interfaceOrientation == UIDeviceOrientationLandscapeLeft;
    }
}
于 2013-10-15T09:42:40.160 に答える