31

UIInterfaceOrientationLandscapeRightサポートされている方向によって優先方向が返されるため、このエラーは意味がありません

//iOS6

-(BOOL)shouldAutorotate
{
    return NO;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return (UIInterfaceOrientationLandscapeRight | UIInterfaceOrientationLandscapeLeft);
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationLandscapeRight;
}

エラー :

キャッチされなかった例外「UIApplicationInvalidInterfaceOrientation」が原因でアプリを終了しました。理由:「preferredInterfaceOrientationForPresentationはサポートされているインターフェイスの向きを返す必要があります!」

4

4 に答える 4

57

コードは次のようになります。

-(BOOL)shouldAutorotate
{
    return NO;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationLandscapeRight;
}

また、Info.plistアプリの向きが正しいことを確認してください。これは、戻ってきたものsupportedInterfaceOrientationsがと交差しているInfo.plistためです。一般的な向きが見つからない場合は、エラーが発生します。

于 2012-10-02T13:59:33.367 に答える
13

supportedInterfaceOrientationsは、shouldAutorotateがYESに設定されている場合にのみ呼び出されます

- (BOOL)shouldAutorotate
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationLandscapeRight;
}

私にとって最も簡単なアプローチは、Info.plistを設定することだけです。

info.plist

iOS 5をサポートしたい場合は、ViewControllerでこのコードを使用してください。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
于 2012-11-23T15:53:04.977 に答える
9

これらはの間違った列挙型ですsupportedInterfaceOrientationsUIInterfaceOrientationMaskLandscapeLeftなどを使用する必要があります(中央の単語マスクに注意してください)

于 2012-10-02T13:53:53.840 に答える
1

ドキュメントから:

-(NSUInteger)supportedInterfaceOrientations {

    return UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskLandscapeLeft; 
}

正しい向きは「マスク」であることに注意してください!これを試しましたか?

于 2013-02-26T18:16:59.023 に答える