Reputation: 6070
I am building a sandboxed app for macOS
with SwiftUI
. I have a NSImage
that is displayed as Image(nsImage: myNSImage)
. I want that View to support drag and drop, meaning that it can be dragged to any location that can receive image files.
Here’s my approach:
Image(nsImage: myNSImage)
.onDrag({
let itemProvider = NSItemProvider()
itemProvider.suggestedName = "image.png"
itemProvider.registerDataRepresentation(for: UTType.png) {
loadHandler in
loadHandler(nsImage.pngRepresentation, nil)
print("loadHandler completed") // Never prints !!
return nil
}
return itemProvider
})
This way I can drag the View. But it seems like it isn’t able to provide the image.
The “drop”, i.e. on the Desktop, is simply not working. I would expect that it saves an "image.png"
in the destination URL, but it doesn’t.
How can I implement .onDrag
so that it provides a image file based on NSImage
?
Edit: I already have tried different UTType
s, for example .tiff
in combination with nsImage.tiffRepresentation
without luck.
Upvotes: 2
Views: 173