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

# UIDragInteractionDelegate

The interface for configuring and controlling a drag interaction.

```
@MainActor protocol UIDragInteractionDelegate : NSObjectProtocol
```

## Topics

### Performing the drag

[`dragInteraction(_:itemsForBeginning:)`](/documentation/UIKit/UIDragInteractionDelegate/dragInteraction(_:itemsForBeginning:))

Asks the delegate for the array of drag items for an impending drag interaction.

[`dragInteraction(_:itemsForAddingTo:withTouchAt:)`](/documentation/UIKit/UIDragInteractionDelegate/dragInteraction(_:itemsForAddingTo:withTouchAt:))

Asks the delegate for the drag items to add to an in-progress drag session, in response to a user gesture to add the items.

[`dragInteraction(_:sessionForAddingItems:withTouchAt:)`](/documentation/UIKit/UIDragInteractionDelegate/dragInteraction(_:sessionForAddingItems:withTouchAt:))

Asks the delegate which drag session to add drag items to when there is more than one in-progress session.

### Animating the drag behaviors

[`dragInteraction(_:willAnimateLiftWith:session:)`](/documentation/UIKit/UIDragInteractionDelegate/dragInteraction(_:willAnimateLiftWith:session:))

Tells the delegate the system’s lift animation is about to start.

[`dragInteraction(_:item:willAnimateCancelWith:)`](/documentation/UIKit/UIDragInteractionDelegate/dragInteraction(_:item:willAnimateCancelWith:))

Tells the delegate the system’s cancellation animation is about to start.

### Monitoring drag progress

[`dragInteraction(_:sessionWillBegin:)`](/documentation/UIKit/UIDragInteractionDelegate/dragInteraction(_:sessionWillBegin:))

Tells the delegate the lift animation has finished and the user is starting to move the items across the screen.

[`dragInteraction(_:session:willAdd:for:)`](/documentation/UIKit/UIDragInteractionDelegate/dragInteraction(_:session:willAdd:for:))

Tells the delegate an interaction is about to add items to a drag session.

[`dragInteraction(_:sessionDidMove:)`](/documentation/UIKit/UIDragInteractionDelegate/dragInteraction(_:sessionDidMove:))

Tells the delegate the user moved the drag items to a new location on the screen.

[`dragInteraction(_:session:willEndWith:)`](/documentation/UIKit/UIDragInteractionDelegate/dragInteraction(_:session:willEndWith:))

Tells the delegate the drag activity will end with the specified operation.

[`dragInteraction(_:session:didEndWith:)`](/documentation/UIKit/UIDragInteractionDelegate/dragInteraction(_:session:didEndWith:))

Tells the delegate the drag activity and its related animations have finished.

[`dragInteraction(_:sessionDidTransferItems:)`](/documentation/UIKit/UIDragInteractionDelegate/dragInteraction(_:sessionDidTransferItems:))

Tells the delegate the destination view has received the data for the drag items.

### Providing drag previews

[`dragInteraction(_:previewForLifting:session:)`](/documentation/UIKit/UIDragInteractionDelegate/dragInteraction(_:previewForLifting:session:))

Asks the delegate for the targeted drag item preview that will appear during the lift animation.

[`dragInteraction(_:previewForCancelling:withDefault:)`](/documentation/UIKit/UIDragInteractionDelegate/dragInteraction(_:previewForCancelling:withDefault:))

Asks the delegate for the targeted drag item preview to show during the cancellation animation.

[`dragInteraction(_:prefersFullSizePreviewsFor:)`](/documentation/UIKit/UIDragInteractionDelegate/dragInteraction(_:prefersFullSizePreviewsFor:))

Asks the delegate whether the preview should appear in its original size or a scaled size.

### Restricting the drag behavior

[`dragInteraction(_:sessionIsRestrictedToDraggingApplication:)`](/documentation/UIKit/UIDragInteractionDelegate/dragInteraction(_:sessionIsRestrictedToDraggingApplication:))

Asks the delegate whether the system should restrict the drag session to the app that started the session.

[`dragInteraction(_:sessionAllowsMoveOperation:)`](/documentation/UIKit/UIDragInteractionDelegate/dragInteraction(_:sessionAllowsMoveOperation:))

Asks the delegate whether the session allows the move operation.



---

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)