Приложение для iOS не обнаруживает изменения ориентации устройства

У меня проблема с изменением ориентации в моем приложении. Мое приложение поддерживает ориентации устройств Portrait, LandscapeLeft и LandscapeRight, и я уверен, что на 100% правильно настроил их в Info.plist. Когда я запускаю свое приложение на iPhone/Simulator и поворачиваю устройство, ни одно из моих приложений ViewControllers не реагирует на вращение. То есть никакие ViewControllers нельзя перевести в альбомный режим, независимо от того, как сильно и безумно я поворачиваю свой телефон. Я попытался переопределить переменную "Autorotate", чтобы вернуть true / false, тот же результат, мое приложение придерживается одного портретного режима, а это не то, что я хочу. Поэтому я подумал, что, возможно, мое приложение не может даже обнаружить изменение ориентации устройства; поэтому я поместил следующий код в свой AppDelegate, и я был прав: func "deviceOrientationDidChange" никогда не вызывается при повороте телефона, но вызывается, когда приложение входит в фоновый режим. У кого-нибудь есть какие-нибудь подсказки? Я боролся с этим в течение нескольких дней и пытался найти решение из интернета, но надежды не было. Пожалуйста помоги.

UIDevice.current.beginGeneratingDeviceOrientationNotifications()
let notifiCenter = NotificationCenter.default
notifiCenter.addObserver(self, selector: #selector(self.deviceOrientationDidChange(_:)), name: .UIDeviceOrientationDidChange, object: nil)

func deviceOrientationDidChange(_ notification: Notification) {
    print("device orientation did change...")
}

2 ответа

Решение

Я все еще не мог понять, что на самом деле является причинами, но эта проблема все-таки была исправлена ​​после того, как я обновил все модули pod, используемые в моем приложении. Я действительно так старался, чтобы выяснить, что вызывает эту проблему. К сожалению, я не смог. У меня около 20 сторонних фреймворков, установленных через модуль. Мое решение этой проблемы - Pod Update. Не повезло с причинами. Надеюсь, что этот ответ поможет кому-то в будущем.

Я не знаю, чего вы пытаетесь достичь, но обычно использую:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { super.viewWillTransition(to: size, with: coordinator) // Do more stuff }

Должно быть достаточно, чтобы перехватить обратный вызов при изменении поворота, так как размер представления также изменяется.

Другие вопросы по тегам