Je veux mettre en œuvre un certain "simple" glisser & déposer dans mon application Mac. J'ai glissé dans une vue et entré "MyView" dans mon fichier nib en conséquence.Cependant je n'obtiens aucune réponse dans ma console (j'essaie de consigner les messages chaque fois que l'une des méthodes de protocole est déclenchée)Glisser & déposer (<NSDraggingDestination>) dans Cocoa ne fonctionne pas
J'ai sous-classé NSView comme ceci:
@interface MyView : NSView <NSDraggingDestination>{
NSImageView* imageView;
}
et mettre en œuvre comme ceci:
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self registerForDraggedTypes:[NSImage imagePasteboardTypes]];
NSRect rect = NSMakeRect(150, 0, 400, 300);
imageView = [[NSImageView alloc] initWithFrame:rect];
[imageView setImageScaling:NSScaleNone];
[imageView setImage:[NSImage imageNamed:@"test.png"]];
[self addSubview:imageView];
}
return self;
}
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender{
NSLog(@"entered");
return NSDragOperationCopy;
}
- (NSDragOperation)draggingUpdated:(id <NSDraggingInfo>)sender{
return NSDragOperationCopy;
}
- (void)draggingExited:(id <NSDraggingInfo>)sender{
NSLog(@"exited");
}
- (BOOL)prepareForDragOperation:(id <NSDraggingInfo>)sender{
NSLog(@"som");
return YES;
}
- (BOOL)performDragOperation:(id<NSDraggingInfo>)sender {
NSPasteboard *pboard = [sender draggingPasteboard];
if ([[pboard types] containsObject:NSURLPboardType]) {
NSURL *fileURL = [NSURL URLFromPasteboard:pboard];
NSLog(@"%@", fileURL);
}
return YES;
}
- (void)concludeDragOperation:(id <NSDraggingInfo>)sender{
NSLog(@"conclude sth");
}
- (void)draggingEnded:(id <NSDraggingInfo>)sender{
NSLog(@"ended");
}
- (BOOL)wantsPeriodicDraggingUpdates{
NSLog(@"wants updates");
}
- (void)updateDraggingItemsForDrag:(id <NSDraggingInfo>)sender NS_AVAILABLE_MAC(10_7){
}
imagePasteboardTypes = contenu de l'image seulement –