0

私はこの投稿とは逆の問題を抱えているようです:

iOS 6 の自動回転の動作がおかしい

有料アプリを Apple に提出したとき、XCode により、テスト デバイスで iOS 6 に更新されました。XCode の GUI を使用して、アプリを iPhone では縦向きモードでのみ表示し、iPad では横向きモードでのみ表示するように設定しました。これは、iOS 6 の iPhone と iPad でうまく機能します。しかし、iOS 5 では、iPad はアプリを縦向きに回転させ、私のボタンをあるべきではないレターボックスのような黒い領域に表示し、繰り返しクラッシュすることを許している。

ナビゲーション コントローラーとストーリーボードを使用しています。

shouldAutorotateToInterfaceOrientation が iOS 6 で非推奨になっていることは知っていますが、iOS 5 でも呼び出す必要があると考えて、これを試しました。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    {
        if ((UIDeviceOrientationIsLandscape(UIDeviceOrientationLandscapeLeft))||(UIDeviceOrientationIsLandscape(UIDeviceOrientationLandscapeRight))) {
            return YES;
        }
        else return NO;
    }
    else
    {
        if ((UIDeviceOrientationIsLandscape(UIDeviceOrientationPortrait))||(UIDeviceOrientationIsLandscape(UIDeviceOrientationPortraitUpsideDown))) {
            return YES;
        }
        else return NO; }
    // Return YES for supported orientations
}

上記のコードは何もしていないようです。私はそれを各View Controllerに入れています。ナビゲーションコントローラーに実際に配置する必要があるようですが、グラフィカルに設定したため、その方法がわかりません。ナビゲーション コントローラーをサブクラス化し、コードですべてを実行する必要がありますか? これにはストーリーボード設定を使用する方法が必要です。

(注:私はAutoLayoutを使用しておらず、明らかに気に入らないソフトウェアを含めているいくつかの古いコンポーネントのために使用できません。)

何が原因でしょうか? あまりにも多くの人がアプリを購入して文句を言う前に修正​​したいと思います! 前もって感謝します...

4

1 に答える 1

2

コードは次のようになります。ここでは、比較のためにメソッドに渡されるパラメーター「 interfaceOrientation 」を使用します。

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
    if ((UIDeviceOrientationIsLandscape(interfaceOrientation))||(UIDeviceOrientationIsLandscape(interfaceOrientation))) {
        return YES;
    }
    else return NO;
}
else
{
    if ((UIDeviceOrientationIsLandscape(interfaceOrientation))||(UIDeviceOrientationIsLandscape(interfaceOrientation))) {
        return YES;
    }
    else return NO; }
于 2012-11-01T16:59:12.053 に答える