2

I have a panel with an image on it, and I want to make it so that you can copy a file (not the image,the image is only going to server as an icon for the file) into a folder by “dragging” the image outside of the application and into any other application that accepts files being dragged into it (ex. Finder). How can I do this?

I implemented the NSDraggingSource protocol, but I’m not sure how to make the image draggable. It is currently inside of an ImageView, which is inside of an ImageViewCell.

Here is the protocol I implemented:

#import "DragNDropView.h"

@implementation 
-(NSDragOperation)draggingSession:(NSDraggingSession *)session
sourceOperationMaskForDraggingContext: (NSDraggingContext) context{
  switch(context){
    case NSDraggingContextOutsideApplication:
      return NSDragOperationCopy;
      break;
    default:
      return NSDragOperationNone;
      break;
  }
}

-(void) draggingSession:(NSDraggingSession *)session willBeginAtPoint:(NSPoint) screenPoint{
   NSPasteboard *pboard = [NSPasteboard pasteboardWithName:NSDragPboard];
   NSPaseBoardItem *contents = [[NSPasteboardItem alloc]
                                inithWithPasteboardPreopertyList:SDKFileName ofType:NSFileContentsPboardType];
   [pboard writeObjects[NSArray arrayWithObjects:contents, nil]];
}

-(void)drawRect:(NSRect)dirtyRect{
  SDKFileName = @"example.example";
  [super drawRect:dirtyRect];
}

@end
marcopolo
  • 1,963
  • 4
  • 18
  • 31

1 Answers1

1

I added the method - (id)initWithCoder(NSCode *)coder and I also added
- (BOOL)acceptesFirstMouse:(NSEvent *)event { return YES; }

marcopolo
  • 1,963
  • 4
  • 18
  • 31