supportedInterfaceOrientations не вызывается в iOS 13

В iOS 13 нажатие на контроллер представления с использованием перехода, такого как «Показать», приводит к тому, что supportedInterfaceOrientations не вызывается на представленном контроллере представления (VC2). В результате контроллер автоматически переключается в портретный режим, хотя supportedInterfaceOrientations возвращает только .landscape. Однако, если мы отправим другой контроллер представления (VC3) из этого контроллера (VC2) через любой переход, VC3 не будет автоматически поворачиваться.

Единственный обходной путь, который я нашел, - это представление VC2 в качестве контроллера модального представления с использованием стиля модального представления fullScreen. Я не хочу этого на устройствах iPad, поэтому ищу причину, по которой это происходит на iOS 13, и исправление.


person Deepak Sharma    schedule 17.08.2019    source источник


Ответы (1)


Вы должны установить «стиль презентации» на контроллере представления на полноэкранный режим, тогда будет вызвано переопределение поддерживаемого интерфейса.

Раскадровка

или проверьте это для получения дополнительной информации

Как представить модальное окно поверх текущего представления в Swift

person John Lanzivision    schedule 27.09.2019
comment
Я просто попробовал это (Xcode 12.4 / Swift 5 / iOS 12.4) с обычным UIViewController (раньше был установлен автоматический) с переходом на показ, но функция все еще не вызывалась. - person Neph; 12.04.2021
comment
У вас все это есть под навигатором? Если да, это может перехватить изменение - person John Lanzivision; 13.04.2021
comment
Нет, по крайней мере, не напрямую. Есть один открывающийся контроллер представления 2, но VC3 и VC4 (для которого я хочу предотвратить изменение ориентации) открываются с переходом (performSegue, это VC2 - ›VC3 -› VC4). Также есть VC1, который я тоже не хотел, чтобы пользователь поворачивал, но наличие кода в этом классе тоже не сработало - мне пришлось создать класс для начального UINavigationController, который загружает VC1, и добавить туда код. Но этот контроллер загружает VC напрямую, а не через несколько этапов, как в VC4. - person Neph; 14.04.2021