2

我有一个带有图像的面板,我想制作它,以便您可以通过“拖动”将文件(不是图像,图像仅作为文件的图标发送到服务器)复制到文件夹中应用程序外部的图像以及任何其他接受将文件拖入其中的应用程序(例如 Finder)。我怎样才能做到这一点?

我实现了NSDraggingSource协议,但我不确定如何使图像可拖动。它当前位于 内部ImageView,后者位于 内部ImageViewCell

这是我实现的协议:

#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
4

1 回答 1

1

我添加了方法- (id)initWithCoder(NSCode *)coder,我还添加了
- (BOOL)acceptesFirstMouse:(NSEvent *)event { return YES; }

于 2013-01-16T21:04:11.553 回答