View being blocked by UITransitionView after being presented

I have a side navigation controller and present it via a UIButton. When I make this NC the root view controller directly by [self presentviewcontroller: NC animated: YES completion: nil], some reason the menu side of the NC is blocked by a UITransitionView that I cannot get to disappear.

I’ve attached an image of the view hierarchy. Here is another.

  • What is a 'UIView-Encapsulated-Layout-Width' constraint?
  • UILabel text margin
  • Why does Xcode successfully build & copy my application, but won't launch it?
  • ios 8 swift - how to add footer for tableview using separate datasource
  • Swift get characteristic.value in decimal
  • The array value should be sort like (alphabetic, numbers and special characters)
  • I have tried the following:

    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
                        animations:^{ window.rootViewController = nc; }
                        completion:^(BOOL finished) {
                            for (UIView *subview in window.subviews) {
                                if ([subview isKindOfClass:NSClassFromString(@"UITransitionView")]) {
                                    [subview removeFromSuperview];

    But it is very hacky, and as the rootviewcontroller of the window changes during the transition, it’s a little choppy and part of the navigationcontroller and the top right corner turn black. It looks very bad.

    3 Solutions Collect From Internet About “View being blocked by UITransitionView after being presented”

    To get tap events through the UITransitionView, set the containerView‘s userInteractionEnabled to false. This is if you’re doing a custom transition animation by using UIViewControllerAnimatedTransitioning.

    Example, in your animateTransition(_:):

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

    I had the same issue but in a little different scenario, I ended up doing something very similar to find the view but instead of removing the view which can be more problematic I disabled the user interaction so any touch events just go throw it and any other objects can handle to user’s interaction.
    In my case this was only present after updating the app to iOS 10, the same code running in iOS 9 didn’t fall into this.

    The best, remove UITransitionView , to be clear

    use this line code SWIFT 3.0

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