 {
     // MARK: - State
     private var registeredPreviewingDataList = [RegisteredPreviewingData]()
-    private var peekState: PeekState = .finished 
+    private var peekState: PeekState = .finished
+    
+    private weak var peekGestureRecognizer: UIGestureRecognizer? {
+        didSet {
+            oldValue?.removeTarget(self, action: nil)
+            peekGestureRecognizer?.addTarget(self, action: #selector(onPeekGestureChange(_:)))
+        }
+    }
     
     // MARK: - PeekAndPopUtility
     @available(iOS 9.0, *)

            
            // Notify about a reregister
            registeredPreviewingData.onPreviewingContextChange?(newPreviewingContext)
        }
    }
}

        
        switch peekState {
        case .waitingForPeekAndPopData:
            var rollbackUnbindingViewControllerFromParent: (() -> ())?
            
            unbindViewControllerFromParent(
                viewController: viewController,
                rollback: &rollbackUnbindingViewControllerFromParent
            )
 
            
            let peekAndPopData = PeekAndPopData(
                peekViewController: viewController,
                popAction: {
                    rollbackUnbindingViewControllerFromParent?()
                    popAction()
                }
            )
            
            peekState = .receivedPeekAndPopData(peekAndPopData)
