首页 > 解决方案 > 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!
            }
        })

        
        
    }

标签: iosswiftxcodemodalviewcontrollerdismiss

解决方案


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

推荐阅读