ios - Toques no reconocidos después de la transición personalizada
ios7 custom-transition (1)
Tengo un problema con las transiciones personalizadas en el iPad. Creo una transición personalizada que se anima correctamente y parece funcionar (es decir, se produce la transición). Sin embargo, cuando llego al controlador de vista de destino (después de ejecutar el bloque isLoggedIn), el controlador de vista de destino no responde (no responde a eventos táctiles). Tengo la sensación de que tiene algo que ver con la llamada a [container insertSubview:toViewController.view belowSubview:fromViewController.view];
porque si llamo [container insertSubview:toViewController.view aboveSubview:fromViewController.view];
los toques funcionan como se esperaba (pero no se puede ver la animación, como ocurre en el controlador de vista de origen).
¿Alguna idea de por qué los eventos táctiles no están siendo reconocidos?
-(void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext {
UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
UIView *container = [transitionContext containerView];
//Prepare the view
if (self.isLoggedIn) {
//Insert the main view under the login view
CGRect frame = CGRectMake(0, 0, toViewController.view.frame.size.height,
toViewController.view.frame.size.width);
toViewController.view.frame = frame;
[container insertSubview:toViewController.view belowSubview:fromViewController.view];
} else {
CGRect frame = CGRectMake(0, 0, toViewController.view.frame.size.height,
toViewController.view.frame.size.width);
toViewController.view.frame = frame;
if([toViewController respondsToSelector:@selector(openWalls)]) {
[(DJVLoginViewController*)toViewController openWalls];
}
if([toViewController respondsToSelector:@selector(toggleLoginViewsAlpha:)]) {
[(DJVLoginViewController*)toViewController toggleLoginViewsAlpha:0];
}
//Insert the login view above the main view
[container insertSubview:toViewController.view aboveSubview:fromViewController.view];
}
//Make animations
[UIView animateWithDuration:[self transitionDuration:transitionContext]
animations:^{
if (self.isLoggedIn) {
//Perform animation
} else {
//Perform animation
}
} completion:^(BOOL finished) {
[transitionContext completeTransition:YES];
}];
}
Intenta eliminar fromView de la supervista:
[UIView animateWithDuration:[self transitionDuration:transitionContext]
animations:^{
if (self.isLoggedIn) {
//Perform animation
} else {
//Perform animation
}
} completion:^(BOOL finished) {
[fromViewController.view removeFromSuperview];
[transitionContext completeTransition:YES];
}];
}