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

问题描述

我有一个以模态呈现的视图。这是 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")
    
                }
            })
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...