Отключение интерактивного закрытия представленного контроллера представления на iOS 13 при перетаскивании из основного представления
TL; DR: Ищете решение для включения интерактивного увольнения при перетаскивании вниз с панели навигации, но не из представления контроллера представления.
Вступление
Контроллеры модального представления iOS 13 позволяют отключить интерактивное увольнение несколькими способами:
- Настройка
vc.modalPresentationStyle = .fullScreen
(см. Представление модального окна в полноэкранном режиме iOS 13) - Настройка
viewController.isModalInPresentation = true
(см. Отключение интерактивного закрытия представленного контроллера представления в iOS 13) - Реализация
UIAdaptivePresentationControllerDelegate
методы делегата (см. изменения UINavigationBar в iOS13)
Первый отлично подходит, если вы хотите такое же поведение, как iOS 12 и ниже.
Второй отлично подходит для предотвращения интерактивного увольнения, но все же позволяет перетаскивать контроллер представления вниз при вытягивании из представления контроллера основного представления (с красивой анимацией).
Последний позволяет лучше обрабатывать события, но не помогает предотвратить перетаскивание из представления контроллера представления.
Потяните для обновления (закрыть)
Самое близкое, что я видел, - это установка элемента управления обновлением, чтобы предотвратить отклонение во время обновления по запросу. Этот GIF показывает поведение, которое я ищу ( источник):
Это взаимодействие с обновлением можно увидеть на модальном экране папки "Входящие" в приложении "Календарь" iOS.
Что я ищу
Поведение, которое я ищу, такое же, как указанное выше, но без просмотра прокрутки и управления обновлением.
В принципе, прикосновения к представлению контроллера представления не должны вызывать интерактивное увольнение.
Я пробовал следующее, но безуспешно:
view.isExclusiveTouch = true
view.isUserInteractionEnabled = false
В общем, что мне нужно:
- Включено интерактивное увольнение при перетаскивании с панели навигации
- Интерактивное увольнение отключено при перетаскивании в любое место на главном экране
- Без отказов при увольнении
Спасибо!