仅限iOS 7.0中的UIPercentDriventInteractionController错误

仅限iOS 7.0中的UIPercentDriventInteractionController错误,ios,ios7,uinavigationcontroller,uiviewanimationtransition,Ios,Ios7,Uinavigationcontroller,Uiviewanimationtransition,我已经为UINavigationController实现了一个自定义转换,该转换在演示时将向上缩放演示视图,在关闭时将向下缩放正在关闭的视图控制器 我还实现了百分比驱动的交互 我有一个奇怪的bug,它只出现在iOS 7.0中。*(我的应用目标是7.0及以上版本)。仅在某些屏幕上(但可重复),如果我通过调用我的UIPercentDrivenInteractiveTransition对象上的cancelInteractiveTransition取消百分比驱动的转换,顶视图控制器视图将显示,其属性设置

我已经为UINavigationController实现了一个自定义转换,该转换在演示时将向上缩放演示视图,在关闭时将向下缩放正在关闭的视图控制器

我还实现了百分比驱动的交互

我有一个奇怪的bug,它只出现在iOS 7.0中。*(我的应用目标是7.0及以上版本)。仅在某些屏幕上(但可重复),如果我通过调用我的
UIPercentDrivenInteractiveTransition
对象上的
cancelInteractiveTransition
取消百分比驱动的转换,顶视图控制器视图将显示,其属性设置在UIView动画块中,该块由my
UIViewControllerContextTransitioning
对象用于动画,而不是取消转换

因此,例如,如果我将Dismission动画设置为将dismissing view控制器缩放到50%,我将看到top view控制器缩放到50%,其后面有一个黑屏,而不是应该的全尺寸,因为我已取消转换

在iOS 7.1及以上版本中,以及在iOS 7.0中的一些屏幕上,一切都可以正常工作

以前有没有人见过类似的情况,或者知道问题出在哪里

下面是一些代码:

UINavigationControllerDelegate协议方法的实现:

- (id<UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController animationControllerForOperation:(UINavigationControllerOperation)operation fromViewController:(UIViewController *)fromVC toViewController:(UIViewController *)toVC
{
    if (UINavigationControllerOperationNone)
    {
        return nil;
    }

    if (operation == UINavigationControllerOperationPush)
    {
        self.transitionAnimator.type = AnimationTypePresent;
        return self.transitionAnimator;
    }

    if (operation == UINavigationControllerOperationPop)
    {
        self.transitionAnimator.type = AnimationTypeDismiss;
        return self.transitionAnimator;
    }

    return nil;
}

- (id<UIViewControllerInteractiveTransitioning>)navigationController:(UINavigationController 
*)navigationController interactionControllerForAnimationController:(id<UIViewControllerAnimatedTransitioning>)animationController
    {
        return self.interactionController;
    }
取消转换的代码:

- (void)edgePanGestureBegan:(UIScreenEdgePanGestureRecognizer *)recognizer
{
    if (!self.transitionCoordinator) {
        self.interactionController = [UIPercentDrivenInteractiveTransition new];
        [self popViewControllerAnimated:YES];
    }
}
 [self.interactionController cancelInteractiveTransition];
以及my
UIViewControllerContextTransitioning
对象中的相关代码:

- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
    UIView *containerView = [transitionContext containerView];
    UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
    UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];

    if (self.type == AnimationTypePresent) {
        ...
    } else if (self.type == AnimationTypeDismiss) {
        [containerView insertSubview:toViewController.view belowSubview:fromViewController.view];
        [UIView animateWithDuration:[self transitionDuration:transitionContext]
                         animations:^{
                             CATransform3D transform = CATransform3DMakeScale(0.01, 0.01, 1.0);
                             fromViewController.view.layer.transform = transform;
                         }
                         completion:^(BOOL finished) {
                             [transitionContext completeTransition:!transitionContext.transitionWasCancelled];
                         }];
    }
}
-(void)animateTransfion:(id)transitionContext
{
UIView*containerView=[transitionContext containerView];
UIViewController*fromViewController=[transitionContext ViewControllerWorky:UITransitionContextFromViewControllerKey];
UIViewController*toViewController=[transitionContext ViewControllerWorky:UITransitionContextToViewControllerKey];
if(self.type==AnimationTypePresent){
...
}else if(self.type==animationtypedisease){
[containerView insertSubview:toViewController.view下的SubView:fromViewController.view];
[UIView animateWithDuration:[自转换持续时间:转换上下文]
动画:^{
CATTransformorM3D transform=CATTransformorM3DMakeScale(0.01,0.01,1.0);
fromViewController.view.layer.transform=转换;
}
完成:^(布尔完成){
[transitionContext completeTransition:!transitionContext.transitionWasCancelled];
}];
}
}