7

最新のiOS6ベータ版(バージョン2または3)を試している人は、自動回転が機能しないという同じ経験をしていますか?

ストーリーボードではなく、純粋なナビゲーションコントロールを使用しています。

self.navController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
[self.window addSubview:navController.view];

そして持っている:

- (BOOL)shouldAutorotateToInterfaceOrientation: ](UIInterfaceOrientation)interfaceOrientation
{
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
} else {
    return YES;
}
}

- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskAllButUpsideDown;
}

しかし、IOSにはまったく支持がなく、3GS / 4Sおよび4.3,5.0.5.1シミュレーター上の以前のすべてのiOSで正常に動作しますが、iOS6はバグがあるようです

4

3 に答える 3

10

自動回転は iOS 6 で変更されています。iOS 6 では、 のshouldAutorotateToInterfaceOrientation:メソッドUIViewControllerは非推奨です。その代わりに、supportedInterfaceOrientationsandshouldAutorotateメソッドを使用する必要があります。

詳細はこちらをご覧ください

于 2012-07-18T15:04:24.043 に答える
7

それ以外の[self.window addSubview:navController.view];

入れるself.window.rootViewController = navController;

于 2012-10-02T06:40:30.287 に答える
0

解決策は次のとおりです。私のアプリは 4.3 以降をサポートしようとしているので、ナビゲーション コントローラーを使用してすべてのビューの切り替えを行う必要があります。

ios6 では、ナビゲーション コントローラーに委任されているようです。独自のナビゲーション コントローラーを定義し、回転動作を変更するための条件と関数をセットアップする必要があります。

ビューをロードしたら、([self.navigationCONtroller setEnableLandscape:(BOOL)false]) を実行します。そのようにして、ナビゲーションコントローラーの完全なコントローラーを手に入れます。

注: ナビゲーション コントローラーのメソッドをオーバーライドしようとしましたが、無視されたようです。(これは ios 6.0 でのみ発生します)、6.1 はまだテストしていないため、修正されるかどうかはわかりません (修正される場合はお知らせください)。

于 2012-11-07T11:10:02.007 に答える