 
 open class NavigationController: UINavigationController {
 
-    open var popAnimator: UIViewControllerAnimatedTransitioning?
+    open var popAnimator: UIViewControllerAnimatedTransitioning? {
+        
+        didSet {
+            
+            self.popInteractiveGestureRecognizer?.isEnabled = self.popAnimator != nil
+        }
+    }
+    
     open var pushAnimator: UIViewControllerAnimatedTransitioning?
     
     open private(set) var popInteractionController: UIPercentDrivenInteractiveTransition?
-    open private(set) lazy var popInteractiveGestureRecognizer: UIGestureRecognizer? = { () -> UIGestureRecognizer? in
-       
+    open private(set) lazy var popInteractiveGestureRecognizer: UIGestureRecognizer? = { [unowned self] in
+        
         let popInteractiveGestureRecognizer = UIScreenEdgePanGestureRecognizer()
         popInteractiveGestureRecognizer.edges = .left
+        popInteractiveGestureRecognizer.addTarget(self, action: #selector(NavigationController.handleInteractivePopGestureRecognizer(_:)))
+        popInteractiveGestureRecognizer.delegate = self
+        
+        self.view.addGestureRecognizer(popInteractiveGestureRecognizer)
         
         return popInteractiveGestureRecognizer
     }()

        super.viewDidLoad()
        
        self.delegate = self
        
        if let popInteractiveGestureRecognizer = self.popInteractiveGestureRecognizer {
        
            popInteractiveGestureRecognizer.addTarget(self, action: #selector(NavigationController.handleInteractivePopGestureRecognizer(_:)))
            popInteractiveGestureRecognizer.delegate = self
            self.view.addGestureRecognizer(popInteractiveGestureRecognizer)
        }
    }
    
    @objc open func handleInteractivePopGestureRecognizer(_ recongnizer: UIGestureRecognizer) {


extension NavigationController: UIGestureRecognizerDelegate {
    
    open func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        
        return true
    }
}

