iOS 13/14 模态视图控制器解除检测

Giz*_*odo 2 xcode dismiss modalviewcontroller ios swift

我有一个以模态方式呈现的观点。这是 iOS 13/14 中向下滑动关闭功能的一部分。

当用户开始关闭模态视图时,我收到此委托调用:

func presentationControllerWillDismiss(_ presentationController: UIPresentationController) {

}
Run Code Online (Sandbox Code Playgroud)

一旦用户开始向下拖动视图,就会调用此函数。但是,它可以被取消。

一旦视图完成关闭,以下调用就会给我:

func presentationControllerDidDismiss(_ presentationController: UIPresentationController) {


}
Run Code Online (Sandbox Code Playgroud)

我需要知道用户何时完成关闭手势以及视图将完成关闭

我能够向前迈出几步,但仍然缺少上述所需的检测:

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!
            }
        })

        
        
    }
Run Code Online (Sandbox Code Playgroud)

Giz*_*odo 5

    final func presentationControllerWillDismiss(_ presentationController: UIPresentationController) {
            
            self.transitionCoordinator?.notifyWhenInteractionChanges({ (context) in
                if context.isCancelled {
                    print ("will cancel")
                } else {
                    print ("will finish")
    
                }
            })
}
Run Code Online (Sandbox Code Playgroud)