4

iOS 6 でアプリを実行すると、アプリが正常に自動回転しなくなりました。私は Cordova 2.1 にアップデートしました。私のMainViewController.mファイルには次のコードがあります (これは のサブクラスでありCDViewController、自動回転を処理する新しい iOS6 の方法と互換性があります。

- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return [super shouldAutorotateToInterfaceOrientation:interfaceOrientation];
}

// iOS 6
- (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    NSUInteger ret = 0;

    if ([self shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationPortrait])
        ret = ret | (1 << UIInterfaceOrientationPortrait);
    if ([self shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationPortraitUpsideDown])
        ret = ret | (1 << UIInterfaceOrientationPortraitUpsideDown);
    if ([self shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeRight])
        ret = ret | (1 << UIInterfaceOrientationLandscapeRight);
    if ([self shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeLeft])
        ret = ret | (1 << UIInterfaceOrientationLandscapeLeft);

    return ret;
}
4

3 に答える 3

8

AppDelegate.m で、次をdidFinishLaunchingWithOptionsに追加する必要があります

[self.window setRootViewController:self.viewController];

これを追加すると、回転が再び機能し始めるはずです。私の2つのアプリにはあります。

于 2012-10-17T12:32:41.343 に答える
4

ここではまだ新しすぎて、このスレッドで mattdryden の回答に投票することができません。ただし、私は彼の答えを支持し、価値を追加するために、彼が提案した修正は PhoneGap/Cordova 1.9 でも機能することに注意してください。

PhoneGap/Cordova 1.9 --> 2.0/2.1 更新プロセスをまだ行っていないアプリがいくつかあり、AppDelegate.m で上記の提案された変更を手動で行うと、それらのアプリで機能しました。

また、その行を置く場所が重要であるように見えることを追加する価値があります。

最初にこの行を直前に追加しました: return YES で失敗しました。次の行のに配置する必要があることがわかりました。

[self.window addSubview:self.viewController.view];

もう 1 つ....Google などを支援するために。この問題をより早く見つけます...この行を追加する必要があるコンソールログの重要なヒントは次のとおりです。

アプリケーション ウィンドウには、アプリケーションの起動の最後にルート ビュー コントローラーがあることが期待されます。

上記のコード行を追加すると、このエラーは解消されます...

これが他の人がこの問題を見ているのに役立つことを願っています.

于 2012-10-30T17:09:35.540 に答える
1

iOS 6 の iPad アプリで同様の問題が発生していました。この問題は、MainViewController が で rootViewController に設定されていないために発生しますAppDelegate.m。あなたのAppDelegate.m置き換えで:

[self.window addSubview:self.viewController.view];

self.window.rootViewController = self.viewController;
于 2012-11-08T14:30:26.440 に答える