<!--
{
  "availability" : [
    "iOS: 11.0.0 -",
    "iPadOS: 11.0.0 -",
    "macCatalyst: 13.1.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "UIKit",
  "identifier" : "/documentation/UIKit/UICollectionViewDropDelegate",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "UIKit"
    ],
    "preciseIdentifier" : "c:objc(pl)UICollectionViewDropDelegate"
  },
  "title" : "UICollectionViewDropDelegate"
}
-->

# UICollectionViewDropDelegate

The interface for handling drops in a collection view.

```
@MainActor protocol UICollectionViewDropDelegate : NSObjectProtocol
```

## Overview

Implement this protocol in the object that you use to incorporate dropped data into your collection view. The only required method of this protocol is the [`collectionView(_:performDropWith:)`](/documentation/UIKit/UICollectionViewDropDelegate/collectionView(_:performDropWith:)) method, but you can implement other methods as needed to customize the drop behavior of your collection view.

Assign your custom delegate object to the [`dropDelegate`](/documentation/UIKit/UICollectionView/dropDelegate) property of your collection view.

## Topics

### Declaring support for handling drops

[`collectionView(_:canHandle:)`](/documentation/UIKit/UICollectionViewDropDelegate/collectionView(_:canHandle:))

Asks your delegate whether the collection view can accept a drop with the specified type of data.

### Incorporating the dropped data

[`collectionView(_:performDropWith:)`](/documentation/UIKit/UICollectionViewDropDelegate/collectionView(_:performDropWith:))

Tells your delegate to incorporate the drop data into the collection view.

### Tracking the drag movements

[`collectionView(_:dropSessionDidUpdate:withDestinationIndexPath:)`](/documentation/UIKit/UICollectionViewDropDelegate/collectionView(_:dropSessionDidUpdate:withDestinationIndexPath:))

Tells your delegate that the position of the dragged data over the collection view changed.

[`collectionView(_:dropSessionDidEnter:)`](/documentation/UIKit/UICollectionViewDropDelegate/collectionView(_:dropSessionDidEnter:))

Notifies you when dragged content enters the collection view’s bounds rectangle.

[`collectionView(_:dropSessionDidExit:)`](/documentation/UIKit/UICollectionViewDropDelegate/collectionView(_:dropSessionDidExit:))

Notifies you when dragged content exits the collection view’s bounds rectangle.

[`collectionView(_:dropSessionDidEnd:)`](/documentation/UIKit/UICollectionViewDropDelegate/collectionView(_:dropSessionDidEnd:))

Notifies you when the drag operation ends.

### Providing a custom preview

[`collectionView(_:dropPreviewParametersForItemAt:)`](/documentation/UIKit/UICollectionViewDropDelegate/collectionView(_:dropPreviewParametersForItemAt:))

Returns custom information about how to display the item at the specified location during the drop.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)