Диалоговое окно, представленное в стиле UIModalPresentationFormSheet во всплывающем контроллере разделенного представления, исчезло после поворота

#ios #cocoa-touch #uisplitviewcontroller #ipad

#iOS #cocoa-touch #uisplitviewcontroller #iPad

Вопрос:

Я использую разделенный вид в своем приложении и представляю диалоговое окно со стилем UIModalPresentationFormSheet во всплывающем контроллере в портретном режиме, но после поворота в альбомный режим диалоговое окно автоматически исчезло. Я не хочу, чтобы оно исчезло, я бы хотел, чтобы пользователь мог использовать диалоговое окно после поворота, что я могу сделать?

Я обнаружил, что если я впервые представлю диалоговое окно в альбомном режиме, диалоговое окно не исчезнет после поворота в портретный режим, это странно.

Любые подсказки или помощь будут высоко оценены.

Комментарии:

1. Я решил эту проблему следующим образом: представьте представление из контроллера разделенного представления вместо всплывающего окна, и представление больше не будет исчезать при каждом повороте устройства.

Ответ №1:

iOS попытается автоматически переместить представление, но это зависит от того, откуда представлено всплывающее окно. Из документов

Если пользователь поворачивает устройство, пока всплывающее окно видно, контроллер всплывающего окна скрывает всплывающее окно, а затем снова показывает его в конце поворота. Контроллер всплывающего окна пытается расположить всплывающее окно соответствующим образом для вас, но в некоторых случаях вам, возможно, придется представить его снова или вообще скрыть. Например, при отображении из элемента кнопки панели контроллер всплывающего окна автоматически корректирует положение (и, возможно, размер) всплывающего окна с учетом изменений положения элемента кнопки панели. Однако, если вы удалите элемент кнопки панели во время поворота или если вы представили всплывающее окно из целевого прямоугольника в представлении, контроллер всплывающего окна не пытается переместить всплывающее окно. В этих случаях вы должны вручную скрыть всплывающее окно или представить его снова с соответствующей новой позиции. Вы можете сделать это в методе didRotateFromInterfaceOrientation: контроллера представления, который вы использовали для представления всплывающего окна.

Комментарии:

1. Я не имею в виду всплывающее представление, я имею в виду другое представление, представленное из всплывающего представления в портретном режиме, представление исчезло после поворота в альбомный режим.

Ответ №2:

Я решил эту проблему следующим образом: представьте представление из контроллера разделенного представления вместо всплывающего окна, и представление больше не будет исчезать при каждом повороте устройства