Я представляю свой UIViewController
с modalPresentationStyle = .formSheet
. Все работает как положено, за исключением интерактивного закрытия этого контроллера (перетаскиваю форму сверху вниз). Контроллер отключен, но он presentingViewController
не двигается назад. Это остается застрявшим с черными краями вокруг.
Если я отклоняю представленный контроллер с помощью dismiss(animated:completion:)
, presentingViewController
перемещается назад, как и ожидалось, поэтому кажется, что он не работает только тогда, когда пользователь отклоняет его, перетаскивая.
Если вам нужны другие подробности, дайте мне знать. Спасибо. 101
Я использую iOS 13.3 и Xcode 11.2.1.
Обновление:
Я нашел проблему. ? Это представление, которое я представил, содержало UITableView
. Я использовал свой метод для установки его tableFooterView
:
extension UITableView {
func setFooterView(_ view: UIView) {
view.frame = bounds
view.setNeedsLayout()
view.layoutIfNeeded()
let height = view.systemLayoutSizeFitting(
CGSize(width: view.frame.width, height: UIView.layoutFittingCompressedSize.height)
).height
var frame = view.frame
frame.size.height = height
view.frame = frame
tableFooterView = view
sectionFooterHeight = 0
}
}
... и я вызвал этот метод в моем контроллере представления в viewDidLayoutSubviews()
, так как думал, что именно здесь я должен установить это представление нижнего колонтитула (просто потому, что мы использовали его в разных проектах ??♂️):
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
tableView.setFooterView(footerView)
}
Но я был не прав. Просто позвонив в viewDidLoad()
, решил.
override func viewDidLoad() {
super.viewDidLoad()
tableView.setFooterView(footerView)
}
Нет, вопрос: почему?
Если кто-нибудь сможет дать правильное объяснение, почему это происходит, я был бы благодарен, и я наградил бы его / ее щедростью. ?