iOS 13 introduces a new design of modalPresentationStyle
.pageSheet
(and its sibling .formSheet
) for modally presented view controllers…
…and we can dismiss these sheets by sliding the presented view controller down (interactive dismissal). Although the new "pull-to-dismiss" feature is pretty useful, it may not always be desirable.
THE QUESTION: How can we turn the interactive dismissal off? - Bear in mind we keep the presentation style the same.
viewController.isModalInPresentation = true
(Disabled interactive .pageSheet
dismissal acts like this.)
UIViewController
contains a new property called isModalInPresentation
which must be set to true
to prevent the interactive dismissal. .popover
etc. false
by default.From the official docs: If
true
, UIKit ignores events outside the view controller's bounds and prevents the interactive dismissal of the view controller while it is onscreen.
func presentationControllerShouldDismiss(_ presentationController: UIPresentationController) -> Bool {
return false
}
UIAdaptivePresentationControllerDelegate
contains a new method called presentationControllerShouldDismiss
.isModalInPresentation
property is set to false
.Tip: Don't forget to assign presentationController's delegate.