I have an NSView which is registered for a drag operation.
In that view I have a subclassed NSScrollView, which in itself has an NSImageView in it.
When dragging onto the original NSView, everything is fine, other than when I drag over the aforementioned NSImageView, which seems to interupt the drag and I cannot drop onto it (or in fact, the view underneath it.
The NSScrollView appears to ignore the drag and allows that to go through to the underlying NSView, but how can I do that for the NSImageView so that the Drag/Drop registers through itself, it's superview (the NSScrollView) and onto the underlying NSView.
You can unregister the NSImageView as a dragging destination. Its superview will then handle the dragging session, if it's set up to do that.
[imageView unregisterDraggedTypes];
Oh, thanks so much @Steven!
Swift 4.2 and @IBOutlets
:
@IBOutlet private weak var imageView: NSImageView! {
didSet {
imageView.unregisterDraggedTypes()
}
}
Long story:
I had this NSCollectionView
, which loaded a custom NSCollectionViewItem
from a XIB
file.
The collection accepts drop operations (collectionView.registerForDraggedTypes([.fileURL])
).
But as soon as something was dropped into it and the custom cell was "dequeued" (makeItem(withIdentifier:for:)
) -- drop operations stopped working above that specific cell.
unregisterDraggedTypes()
fixes the issue indeed. 🎉
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With