2010-08-04 34 views
1

試圖讓這個工作,並不知道我錯過了什麼。這個想法是將圖像放在NSTableView上,這樣我就可以抓住他們的路徑並對它們進行一些操作。我可以得到的下降工作爲NSPastebouardTypeString,但我不能爲我的生活得到它註冊從Finder拖動PNG到桌面視圖。我錯過了什麼?獲取NSTableView註冊從PNG源丟棄

培訓相關代碼:

- (void)awakeFromNib { 
    [imageTableView registerForDraggedTypes:[NSArray arrayWithObject:NSPasteboardTypePNG]]; 
} 

- (NSDragOperation)tableView:(NSTableView *)aTableView validateDrop:(id <NSDraggingInfo>)info proposedRow:(NSInteger)row proposedDropOperation:(NSTableViewDropOperation)operation { 
    NSLog(@"Validate Drop"); 
    return NSDragOperationEvery; 
} 

- (BOOL)tableView:(NSTableView *)aTableView acceptDrop:(id <NSDraggingInfo>)info row:(NSInteger)row dropOperation:(NSTableViewDropOperation)operation { 
    NSLog(@"Accept Drop"); 
    return YES; 
} 

回答

1

PNG 文件從Finder拖是 PNG數據。它們是文件,它們有自己的紙板類型。 (作爲文件,你不一定希望它們在下載的情況下完全加載到內存中,你會嗎?:D)

10.4給你一個NSStrings的NSArray作爲NSFilenamesPboardType。 10.5及更高版本爲您提供一組文件:網址爲NSURLPboardType。由於您使用的是舊API,因此this document on 10.5- APIs applies(10.6完全檢修了粘貼板API,使其更像iOS版)。

+0

好的。那時我誤解了。我是否應該在10.6中不使用NSURLPboardType或NSFileNamesPboardType?我沒有看到一個可比的10.6 api。只是'writefiles:'方法,我認爲它是拖出來的,而不是放在裏面。 – 2010-08-05 14:07:31