Пожар на переход устройства вращаются с портретной на альбомную

голоса
0

Когда пользователь поворачивает устройство в ViewA от портрета до пейзажа, я представляю ViewB. Когда ViewB поворачивается обратно к портрету я представляю (отклоняя назад) ViewA. ViewA представлены детали, в то время как segueing в ViewB представляет диаграмму. Вот мой код:

ViewA

override func viewWillAppear(_ animated: Bool)
    {
        UIDevice.current.beginGeneratingDeviceOrientationNotifications()
        NotificationCenter.default.addObserver(self, selector: #selector(ViewA.segueToLandscapeGraph), name: NSNotification.Name.UIDeviceOrientationDidChange, object: nil)
    }

    @objc func segueToLandscapeGraph()
    {
        let deviceOrientation = UIDevice.current.orientation
            print(fired! From ViewA)
        if UIDeviceOrientationIsLandscape(deviceOrientation){
            self.performSegue(withIdentifier: graphLandscapeSegue, sender: self)
        }
    }

ViewB

override func viewWillAppear(_ animated: Bool)
    {
        UIDevice.current.beginGeneratingDeviceOrientationNotifications()

        NotificationCenter.default.addObserver(self, selector: #selector(ViewB.cancelOutOfLandscapeToPortrait), name: NSNotification.Name.UIDeviceOrientationDidChange, object: nil)
    }

    @objc func cancelOutOfLandscapeToPortrait()
    {
        let deviceOrientation = UIDevice.current.orientation
        print(fired! From ViewB)
        if UIDeviceOrientationIsPortrait(deviceOrientation){
            dismiss(animated: true, completion: nil)
        }
    }
    @IBAction func cancelOutOfSegue(_ sender: Any)
    {
        //This button is a failsafe for when app is stuck on this view
        dismiss(animated: true, completion: nil)
    }

Это отлично работает в течение первых двух поворотов. Тогда он не застревает на ViewB независимо от того , в какую сторону поворачивать его. У меня есть безотказное кнопку , чтобы выйти из ViewB обратно ViewA для этого.

В отладчике я вижу много: если мы находимся в реальной предварительной фиксации обработчика мы не можем на самом деле добавить новые заборы из - за ограничений CA

а также

Попытка представить ViewB.GraphLabelDetailinLandscape: 0x7fa893450360 на> MyApp.ViewA: 0x7fa893851000 которого вид не в иерархии окон!

Задан 30/08/2018 в 18:18
источник пользователем
На других языках...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more