【Swift】UIAlertController などの回転を抑制する

UIAlertView じゃなければ勝手に回転しないとか色々情報があったんですがどうしても動かなかったので試行錯誤してたらやっと動いた

ios - MPInlineVideoFullscreenViewController and AVFullScreenViewController first time comes in portrait mode - Stack Overflow
参考になりそうだったのだけど、Swift で書き換えたら window.rootViewController presentedViewController を取り出したところで nil が代入されて presentedViewController 代入処理の途中で落ちるという状態に....

    func application(application: UIApplication,

        supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask {

        if window == nil {

            return [UIInterfaceOrientationMask.All]

        }

        let rv: UINavigationController = window!.rootViewController! as! UINavigationController

        let vc: UIViewController = rv.visibleViewController!

        if vc.isKindOfClass(UIAlertController) || vc.isKindOfClass(UIAlertView) {

            return [UIInterfaceOrientationMask.Portrait]

        }

        return [UIInterfaceOrientationMask.All]

    }

とりあえずこうしたら、UIAlertController から回転させようとした時に [UIInterfaceOrientationMask.Portrait]
が返るようになったよ

疲れた

 

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です