Код: Выделить всё
.pageSheetОбласть
UIKit → Представление контроллера представления
Тип проблемы
Серьезная ошибка (зависание приложения/пользовательский интерфейс) Зависнуть)
Описание
Интерактивное закрытие модального контроллера представления с помощью .pageSheet зависает в середине жеста на определенных моделях iPhone, когда включен UIDesignRequiresCompatibility.
Замораживание происходит во время жеста пролистывания для закрытия до завершения закрытия. Обратные вызовы жизненного цикла UIKit никогда не завершаются (
Код: Выделить всё
viewDidDisappearЭта проблема, по-видимому, зависит от устройства и зависит от проекта и не воспроизводится в новом проекте с тем же кодом.
Шаги по воспроизведению
- Создайте приложение iOS с целевой iOS для развертывания 13.0
- В Info.plist установите:
Код: Выделить всё
UIDesignRequiresCompatibility = YES - Представьте контроллер модального представления с помощью .pageSheet
- Проведите пальцем вниз, чтобы закрыть модальное окно
- Наблюдайте за зависанием в середине жеста (прогресс ~20 %)
- Интерактивное увольнение завершается нормально
- вызывается
Код: Выделить всё
viewDidDisappear - Приложение остается отзывчивым
- Приложение зависает в середине жеста увольнения
- Пользовательский интерфейс перестает отвечать
- Нет сбоев или ошибок консоли
- никогда не вызывается
Код: Выделить всё
viewDidDisappear
Код: Выделить всё
class TestModalViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .systemBackground
}
}
let modal = TestModalViewController()
modal.modalPresentationStyle = .pageSheet
present(modal, animated: true)
НЕ происходит, когда UIDdesignRequiresCompatibility = NO
НЕ происходит с .fullScreen
НЕ происходит в новом тесте проекта
-
Постоянно встречается в существующем проекте
Затронуто
- iPhone 14 Pro Max
- iPhone 17
- iPhone 17 Pro Max
- iPhone 11
- iPhone 16e
- iOS 26.1
- iOS 26.2
- Проблема возникает во время интерактивного закрытия UIKit анимация
- Нет настраиваемых переходов или анимации
- Программное закрытие работает
- Появляется в связи с совместимостью макета/обработкой жестов на устройствах с большим экраном
Подробнее здесь: https://stackoverflow.com/questions/798 ... ne-17-ipho
Мобильная версия