2013-01-14 60 views
2

我有一個面板上有一個圖像,我想讓它可以複製一個文件(不是圖像,圖像只會作爲一個服務器通過將應用程序外部的圖像「拖動」到任何其他接受拖入其中的文件的應用程序(例如Finder),將該文件的圖標拖到文件夾中。我怎樣才能做到這一點?可可OSX:我怎樣才能使圖像拖動

我實現了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 

回答

1

我添加的方法- (id)initWithCoder(NSCode *)coder和我還添加
- (BOOL)acceptesFirstMouse:(NSEvent *)event { return YES; }