IOS 26.1: модальное пролистывание для закрытия зависает на iPhone 14 Pro Max/iPhone 17/iPhone 17 Pro Max, но работает наIOS

Программируем под IOS
Ответить
Anonymous
 IOS 26.1: модальное пролистывание для закрытия зависает на iPhone 14 Pro Max/iPhone 17/iPhone 17 Pro Max, но работает на

Сообщение Anonymous »

Код: Выделить всё

.pageSheet
интерактивное смахивание для закрытия зависает, когда UIDesignRequiresCompatibility = YES на определенных моделях iPhone (iOS 26.x)

Область
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
  • iOS 26.1
  • iOS 26.2
Примечания
  • Проблема возникает во время интерактивного закрытия UIKit анимация
  • Нет настраиваемых переходов или анимации
  • Программное закрытие работает
  • Появляется в связи с совместимостью макета/обработкой жестов на устройствах с большим экраном


Подробнее здесь: https://stackoverflow.com/questions/798 ... ne-17-ipho
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»