ios13 предотвращает опускание tableView, который прокручивается вверх, от отклонения стиля листа, представленного модально viewController
У меня есть tableViewController, который представлен модально с представлением стиля листа по умолчанию.
Я хочу сохранить этот модальный стиль, так как он хорошо выглядит и хорошо работает в моем приложении. И мне нравится увольнение при опускании на панель навигации. Однако я не хочу опускать ячейки tableView, чтобы отключить tableViewController, когда tableView уже прокручен наверх.
Есть ли способ запретить это поведение, но сохранить модальное представление стиля таблицы? Я хочу, чтобы раскрытие tableView сохраняло эффект вертикального отскока и только чтобы можно было отклонить модально представленный tableViewController через панорамирование, потянув вниз часть панели навигации.
1 ответ
Вы можете отключить поведение оттягивания до закрытия, установив isModalInPresentation
к true
на контроллере табличного представления, когда пользователь начинает перетаскивать табличное представление, а затем сбросить его обратно на false
когда они перестают перетаскивать, вот так:
class YourTableViewController: UITableViewController {
override func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
isModalInPresentation = true
}
override func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
isModalInPresentation = false
}
}
Обратите внимание, что вы все равно сможете немного опустить контроллер табличного представления, но, по крайней мере, вы не сможете полностью его отключить. И поскольку значение снова установлено наfalse
когда перетаскивание останавливается, вы сможете закрыть его, потянув вниз панель навигации.
Кроме того, если вы добавите UIRefreshControl
в табличное представление, он отключает поведение "потянуть для закрытия" при перемещении вниз в табличном представлении.