Il trascinamento della selezione non funziona con la sottoclasse di NSBox
-
07-07-2019 - |
Domanda
Ho creato una sottoclasse di NSBox per implementare il trascinamento della selezione. Ho il seguente codice:
@interface DropView : NSBox {
}
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender;
- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender;
@end
@implementation DropView
- (void)awakeFromNib
{
[self registerForDraggedTypes:
[NSArray arrayWithObject: NSFilenamesPboardType]];
}
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender
{
NSDragOperation sourceDragMask = [sender
draggingSourceOperationMask];
if (sourceDragMask & NSDragOperationLink) {
return NSDragOperationLink;
} else if (sourceDragMask & NSDragOperationCopy) {
return NSDragOperationCopy;
}
return NSDragOperationNone;
}
-(BOOL)performDragOperation:(id <NSDraggingInfo>)sender
{
NSPasteboard *pboard=[sender draggingPasteboard];
NSArray *files = [pboard propertyListForType:NSFilenamesPboardType];
NSEnumerator *e=[files objectEnumerator];
NSString *str=nil;
while(str=[e nextObject]) {
NSLog(@"Got %@\n", str);
}
return (TRUE);
}
@end
Tuttavia, il trascinamento della selezione non funziona. Non vedo il piccolo vantaggio verde quando provo a trascinare qualcosa nella scatola.
Grazie
Soluzione
Risolto il problema. Invece di impostare la classe di un NSView su DropView, impostare la classe di un NSBox su DropView ha funzionato alla grande :-)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow