UITableView drag and drop cell to bottom of list below last cell

Viewed 346

I haven't found anything on this particular issue. I would like to be able to drag and drop a UITableViewCell to the bottom of the table, below the the last item. I can obviously drag a cell over the position of the last cell, but once I drag it below that last cell's area, the drag sort of cancels and the cell goes back to it's original location.

How can I drag an item to below the last item?

Dragging to bottom snaps item back to original position

I'm not doing anything unusual in my tables. This appears to be standard behavior.

    func tableView(_ tableView: UITableView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] {
        if renamingIndexPath != nil { return [] }
        
        return [UIDragItem(itemProvider: NSItemProvider())]
    }
    
    func tableView(_ tableView: UITableView, dropSessionDidUpdate session: UIDropSession, withDestinationIndexPath destinationIndexPath: IndexPath?) -> UITableViewDropProposal {
        if session.localDragSession != nil { // Drag originated from the same app.
            return UITableViewDropProposal(operation: .move, intent: .insertAtDestinationIndexPath)
        }
        return UITableViewDropProposal(operation: .cancel, intent: .unspecified)
    }
    
    func tableView(_ tableView: UITableView, performDropWith coordinator: UITableViewDropCoordinator) {
        let destinationIndexPath: IndexPath

        if let indexPath = coordinator.destinationIndexPath {
            destinationIndexPath = indexPath
        } else {
            let section = tableView.numberOfSections - 1
            let row = tableView.numberOfRows(inSection: section)
            destinationIndexPath = IndexPath(row: row, section: section)
        }
    }
    
    // Keeps the items inside the same app
    func tableView(_ tableView: UITableView, dragSessionIsRestrictedToDraggingApplication session: UIDragSession) -> Bool {
        return true
    }
0 Answers
Related