2017-02-01 24 views
0

Я столкнулся с этой проблемой с моим обычным классом UIViewControllerAnimatedTransitioning. Когда анимация выполнена и отображается представление toView, элементы (кнопки и т. Д.) В нем не могут принимать взаимодействие.При использовании UIViewControllerAnimatedTransitioning кнопки toView не могут взаимодействовать с

Обычай код класса выглядит так:

- (NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext 
{ 
    return 1.0; 
} 

- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext; 
{ 
    UIViewController *fromViewController = (UIViewController *)[transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; 
    UIViewController *toViewController = (UIViewController *)[transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; 
    CGRect finalFrameForVC = [transitionContext finalFrameForViewController:toViewController]; 
    UIView *containerView = [transitionContext containerView]; 
    CGRect bounds = [[UIScreen mainScreen] bounds]; 
    toViewController.view.frame = CGRectMake(0, 0, bounds.size.width, 0); 
    [containerView addSubview:toViewController.view]; 

    [UIView animateWithDuration:[self transitionDuration:transitionContext] delay:0.0 usingSpringWithDamping:1.0 initialSpringVelocity:0.0 options:UIViewAnimationOptionCurveLinear animations:^{ 
     fromViewController.view.alpha = 0.5; 
     toViewController.view.frame = CGRectMake(0, 0, finalFrameForVC.size.width, finalFrameForVC.size.height); 
    } completion:^(BOOL finished) { 
     fromViewController.view.alpha = 0.0; 
    }]; 
} 

И с точки зрения переход называется так:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"showAction"]) { 
     FiltersViewController *filterView = (FiltersViewController *)segue.destinationViewController; 
     filterView.transitioningDelegate = self; 
    } 
} 

-(id<UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source { 
    self.filtersPresentAnimationController = [[FiltersPresentAnimationController alloc] init]; 
    return self.filtersPresentAnimationController; 
} 

Любая идея, что я делаю неправильно? Он отлично работает, когда я удаляю идентификатор segue из segue.

ответ

0

Я просто забыл передать переходному контексту, что переход сделан.

Так не хватает этого в анимации блока готовой

[transitionContext completeTransition:YES];