我创建了一个交互式过渡.我func animateTransition(transitionContext: UIViewControllerContextTransitioning)很正常,我得到了容器UIView,我添加了两个UIViewControllers,然后我做了动画更改UIView.animateWithDuration(duration, animations, completion).
我添加了一个UIScreenEdgePanGestureRecognizer来自我的UIViewController.它运作良好,除非我做一个非常快速的平底锅.
在最后一个场景中,应用程序没有响应,仍然是相同的UIViewController(转换似乎没有工作)但后台任务运行.当我运行时Debug View Hierarchy,我看到的是新的UIViewController而不是前一个,而前一个(至少是它UIView)代表它应该在转换结束时站立的位置.
我做了一些打印和检查点,从中我可以说,当问题发生时,动画的完成(我animateTransition方法中的那个)没有到达,所以我无法调用transitionContext.completeTransition方法来完成或不完成转换.
我也可以看到平底锅有时从UIGestureRecognizerState.Began直线走到UIGestureRecognizerState.Ended没经过UIGestureRecognizerState.Changed.
当它通过UIGestureRecognizerState.Changed,都将translation 与该velocity留为每个相同UIGestureRecognizerState.Changed的状态.
编辑:
这是代码:
animateTransition 方法
func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
self.transitionContext = transitionContext
let containerView = transitionContext.containerView()
let screens: (from: UIViewController, to: UIViewController) = (transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey)!, …Run Code Online (Sandbox Code Playgroud)