I have a NSWindowController
that contains several NSViewControllers
. I would like to universally accept drag and drop events with the NSWindowController class and not be intercepted by other views such as NSTextView
(contained in a NSViewController
)
How can I tell NSTextView
to ignore the drag & drop event?
I found out that there were two things needed to skip past NSTextView
's interception of the drag and drop event.
In the NSViewController
containing your NSTextView
:
- (void)awakeFromNib
{
[self noDragInView:self.view];
}
- (void)noDragInView:(NSView *)view
{
for (NSView *subview in view.subviews)
{
[subview unregisterDraggedTypes];
if (subview.subviews.count) [self noDragInView:subview];
}
}
Now subclass your NSTextView
and add this method:
- (NSArray *)acceptableDragTypes
{
return nil;
}
The NSTextView
should now properly ignore the drag and drop event and leave it to be handled by the NSWindow.