2016-12-19 6 views
2

私は99%の肖像画のみのアプリを持っています。ただ1つのビューコントローラがランドスケープにあります。したがって、私のInfo.plistには、3つの可能な方向が含まれています:ポートレートと両方の風景。iOS:バックグラウンドでアプリの後に状態バーとキーボードが回転する

アプリをバックグラウンドで前面に戻すと、デバイスを回転するとステータスバー(およびキーボードが表示されている場合はキーボード)が横に回転します。私の見解は正しいままです。

これはバグですか、何か不足していますか?

+0

私はまったく同じ問題を抱えています。私はこれについて非常に不満です。私のアプリはXIBのみを使用し(ストーリーボードなし)、Yoursのように1つの画面を除くすべての画面で縦向きになっています。 –

答えて

2

application:supportedInterfaceOrientationsForWindow:をあなたのApp Delegateに実装することができます。アップルのドキュメントから

このメソッドは、アプリでサポートされているインターフェイスの向きの合計セットを返します。特定のビューコントローラを回転するかどうかを決定するとき、このメソッドによって返される方向は、ルートビューコントローラまたは最上位の提示されたビューコントローラによってサポートされる向きと交差される。アプリケーションとビューコントローラは、ローテーションが許可される前に合意する必要があります。 このメソッドを実装しない場合、アプリケーションはデフォルトのインターフェイスの向きとして、アプリのInfo.plistのUIInterfaceOrientationキーの値を使用します。

あなたは、このような何か(あなただけ-1-風景コントローラがMyLandscapeOnlyViewControllerであると仮定)を追加することができます

のObjective-Cを

 
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window 
{ 
    // Return the desired orientation for your custom-oriented ViewController 
    if ([window.rootViewController.presentedViewController isKindOfClass:[MyLandscapeOnlyViewController class]]) 
    { 
     return UIInterfaceOrientationMaskLandscape; 
    } 

    // Default orientation is portrait 
    return UIInterfaceOrientationMaskPortrait; 
} 

スウィフト3

 
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { 
    // Return the desired orientation for your custom-oriented ViewController 
    if (window?.rootViewController?.presentedViewController?.isKind(of: MyLandscapeOnlyViewController.self) == true) { 
     return .landscape 
    } 

    // Default orientation is portrait 
    return .portrait 
} 

検査表示されるViewControllerのうち、最も上に表示されているViewControllerのほうが、ビュー階層によっては難しいかもしれませんが、これは一般的な考え方です。

希望すると便利です。

+0

これは私のアプリのために完璧に機能しました。 –

関連する問題