2

iOS 6 SDK を使用していくつかの変更を加えるまで、私のアプリは正常に動作していました

アプリは 99% の時間、縦向きモードで実行されます。これは、info.plist で使用できるポートレート モードのみを許可することによって制限されています。

横向きモードで表示する必要があるView Controllerが1つあります。これは、次のようにビューを 90 度回転させるだけで「手動」で実現できます。

self.view.transform = CGAffineTransformMakeRotation(3.14159/2);

これは iOS 6 でも問題なく動作します。

ただし、このView Controllerにはいくつかのテキストフィールドがあります。ユーザーがいずれかをタップすると、キーボードが表示されます。ビューを回転しただけなので (デバイスの向きを実際に変更したわけではありません)、キーボードが縦向きモードで表示されますが、これは良くありません。

以前のバージョンの iOS では、ステータス バーの向きを横向きに設定していましたが、副産物として、次のようにキーボードも横向きに設定していました。

[[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationLandscapeRight animated:NO];

ただし、これは iOS 6 では機能しなくなりました。

これを機能させようとして100万回のスタックオーバーフローを読みましたが、まだ運がありません。

4

1 に答える 1

3

キーボードの向きと変換を変更するのは難しい部分であり、適切な解決策ではありません (特にステータス バーの向きを変更する場合)。

より良い解決策は、アプリケーションがすべての向きをサポートできるようにすることです。

ここに画像の説明を入力

回転サポートとして、ViewControllers 内に Orientation デリゲートを実装します。

ランドスケープのみをサポートする場合

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return interfaceOrientation == UIInterfaceOrientationLandscapeLeft
    || interfaceOrientation == UIInterfaceOrientationLandscapeRight ;
}

- (BOOL)shouldAutorotate
{
    return NO;
}

縦向きのみ対応

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

- (BOOL)shouldAutorotate
{
    return NO;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}
于 2013-03-15T23:21:04.800 に答える