问题描述
我有一个以模态呈现的视图。这是 iOS 13/14 向下滑动以关闭功能。
当用户开始关闭模式视图时,我收到此委托调用:
func presentationControllerWillDismiss(_ presentationController: UIPresentationController) {
}
一旦用户开始向下拖动视图,就会调用它。但是,它可以被取消。
一旦视图完成关闭,下面的调用就会给我:
func presentationControllerDidDismiss(_ presentationController: UIPresentationController) {
}
我需要知道用户何时完成关闭手势以及视图何时完成关闭。
我能够向前迈出几步,但仍然没有完成上述要求的检测:
func presentationControllerWillDismiss(_ presentationController: UIPresentationController) {
//User started dismissing,with no guarantee
self.transitionCoordinator!.animate(alongsideTransition: {(context: UIViewControllerTransitionCoordinatorContext) -> Void in
//Dismissal is animating. Could be finishing or canceling the dismissal
},completion: {( context: UIViewControllerTransitionCoordinatorContext) -> Void in
if context.isCancelled {
//Dismissal got cancelled
} else {
//Dismissal has completed. Too Late!
}
})
}
解决方法
final func presentationControllerWillDismiss(_ presentationController: UIPresentationController) {
self.transitionCoordinator?.notifyWhenInteractionChanges({ (context) in
if context.isCancelled {
print ("will cancel")
} else {
print ("will finish")
}
})
}