     
     /// Max allowed initial distance to left edge when you begin the interactive pop
     /// gesture. 0 by default, which means it will ignore this limit.
-    var sh_interactivePopMaxAllowedInitialDistanceToLeftEdge: Double {
+    public var sh_interactivePopMaxAllowedInitialDistanceToLeftEdge: Double {
         get {
             guard let doubleNum = objc_getAssociatedObject(self, RuntimeKey.KEY_sh_interactivePopMaxAllowedInitialDistanceToLeftEdge) as? Double else {
                 return 0.0

    /// A view controller is able to control navigation bar's appearance by itself,
    /// rather than a global way, checking "fd_prefersNavigationBarHidden" property.
    /// Default to true, disable it if you don't want so.
    var sh_viewControllerBasedNavigationBarAppearanceEnabled: Bool {
        get {
            guard let bools = objc_getAssociatedObject(self, RuntimeKey.KEY_sh_viewControllerBasedNavigationBarAppearanceEnabled) as? Bool else {
                self.sh_viewControllerBasedNavigationBarAppearanceEnabled = true

    }
    
    /// The gesture recognizer that actually handles interactive pop.
    public var sh_fullscreenPopGestureRecognizer: UIPanGestureRecognizer {
        guard let pan = objc_getAssociatedObject(self, RuntimeKey.KEY_sh_fullscreenPopGestureRecognizer) as? UIPanGestureRecognizer else {
            let panGesture = UIPanGestureRecognizer()
            panGesture.maximumNumberOfTouches = 1;
