0

OpenGLを使用してiPad用のアプリケーションを構築していますが、画面の回転に問題があります。アプリケーション自体は正常に動作し、4つの方向すべてで正しく表示されますが、他の要素はデバイスの回転に部分的にしか応答しません。

OpenGLは、変換行列を使用してアプリケーションの回転を処理します。それはすべてうまくいきます。デフォルトの画像も正しい回転で表示されます。

ただし、マルチタスクバーは正常に回転していません。アプリケーションが開かれた側に表示されます。したがって、アプリケーションを開いた場合、ホームボタンをダブルタップすると正しい側になりますが、デバイスを回転させた後、アプリケーションを閉じて再度開くまで同じ側に留まります。このバーが表示されると、OpenGLアプリケーションが回転してバーの位置に一致します。

「ゲームセンターにサインイン」ポップアップなどのダイアログボックスも正しく回転しません。それらは標準の縦向きで表示されるようです。

問題を特定するために必要な他の具体的な詳細があるかどうかはわかりませんが、提案をいただければ幸いです。

4

1 に答える 1

0

他のスレッドのスニペットを調べて解決策をまとめたようです。問題は解決したと思います。

アプリケーションのほとんどを制御するメインクラスがあります。次のようなデバイスローテーション通知を受信するように登録されています。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];

オリエンテーションハンドラー関数に数行を追加して、ステータスバーの位置を手動で設定しました。

-(void)updateOrientation {
    if([[UIDevicecurrentDevice]方向]<5 && [[UIDevicecurrentDevice]方向]>0){
        方向=[[UIDevicecurrentDevice]方向];
        [UIApplication sharedApplication].statusBarOrientation=オリエンテーション;
    }
}

条件付きでは、ハンドラーが横向きと縦向きにのみ応答し、上向きと下向きには応答しないように制限されます。

誰かがもっと良い解決策を持っているなら、私はまだそれを聞きたいです、そうでなければ、これが他の誰かを助けることができることを願っています。

于 2011-03-18T21:25:28.743 に答える