 /// Optional methods of the protocol allow the delegate to modify a cell visually before dragging occurs, or to be notified when a cell is about to be dragged or about to be dropped.
 @objc
 public protocol LPRTableViewDelegate: NSObjectProtocol {
+    
+    /// Asks the delegate whether a given row can be moved to another location in the table view based on the gesture location.
+    ///
+    /// The default is `true`.
+    @objc optional func tableView(_ tableView: UITableView, shouldMoveRowAtIndexPath indexPath: IndexPath, forDraggingGesture gesture: UILongPressGestureRecognizer) -> Bool
     
     /// Provides the delegate a chance to modify the cell visually before dragging occurs.
     ///

    
    fileprivate func canMoveRowAt(indexPath: IndexPath) -> Bool {
        return dataSource?.tableView?(self, canMoveRowAt: indexPath) ?? true
    }
    
    @objc internal func _longPress(_ gesture: UILongPressGestureRecognizer) {

        tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
    }
    
    /// Asks the delegate whether a given row can be moved to another location in the table view based on the gesture location.
    ///
    /// The default is `true`. The default implementation of this method is empty—no need to call `super`.
    open func tableView(_ tableView: UITableView, shouldMoveRowAtIndexPath indexPath: IndexPath, forDraggingGesture gesture: UILongPressGestureRecognizer) -> Bool {
        return true
    }
    
    /// Provides the delegate a chance to modify the cell visually before dragging occurs.
    ///
    /// Defaults to using the cell as-is if not implemented. The default implementation of this method is empty—no need to call `super`.
