L'affichage est bloqué par UITransitionView après avoir été présenté

J'ai un controller de navigation latéral et le présente via un UIButton. Quand je fais ce NC le controller de vue racine directement par [self presentviewcontroller: NC animated: YES completion: nil] , une certaine raison le côté du menu de la NC est bloqué par un UITransitionView que je ne peux pas get de disparaître.

J'ai joint une image du voir la hiérarchie . Ici est un autre.

J'ai essayé ce qui suit:

 UIWindow *window = [(AppDelegate *)[[UIApplication sharedApplication] delegate] window]; window.backgroundColor = kmain; CATransition* transition = [CATransition animation]; transition.duration = .5; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; transition.type = kCATransitionPush; transition.subtype = kCATransitionFromTop; [nc.view.layer addAnimation:transition forKey:kCATransition]; [UIView transitionWithView:window duration:0.5 options:UIViewAnimationOptionTransitionNone animations:^{ window.rootViewController = nc; } completion:^(BOOL finished) { for (UIView *subview in window.subviews) { if ([subview isKindOfClass:NSClassFromSsortingng(@"UITransitionView")]) { [subview removeFromSuperview]; } } }]; 

Mais c'est très hacky, et comme le rootviewcontroller de la window change pendant la transition, c'est un peu saccadé et une partie du controleur de navigation et le coin en haut à droite devient noir. Ça a l'air très mauvais.

Pour get des events de prise à l'aide de l' UITransitionView , définissez UITransitionView la UITransitionView containerView sur false . C'est si vous faites une animation de transition personnalisée en utilisant UIViewControllerAnimatedTransitioning .

Exemple, dans votre animateTransition(_:) :

 func animateTransition(transitionContext: UIViewControllerContextTransitioning) { let containerView = transitionContext.containerView() containerView.userInteractionEnabled = false ... } 

J'ai eu le même problème mais dans un scénario un peu différent, j'ai fini par faire quelque chose de très similaire pour find la vue mais au lieu d'enlever la vue qui peut être plus problématique j'ai désactivé l'interaction de l'user les objects peuvent gérer l'interaction de l'user. Dans mon cas, ce n'était présent qu'après la mise à jour de l'application pour iOS 10, le même code fonctionnant dans iOS 9 ne tombe pas dans cela.

Le mieux, supprimer UITransitionView, pour être clair

utilisez ce code de ligne SWIFT 3.0

  @IBAction func MoveBack(_ sender: Any) { dismiss(animated: true, completion: nil) }