1

これを機能させようとしていますが、何が欠けているのかわかりません。アイデアは、画像を にドロップして、NSTableViewそれらのパスを取得し、それらに対していくつかの操作を行うことができるようにすることです。ドロップを動作させることはできますがNSPastebouardTypeString、私の人生では、PNGをFinderからテーブルビューにドラッグすることを登録することはできません。私は何が欠けていますか?

関連コード:

- (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;
}
4

1 に答える 1

1

Finder からドラッグしたPNGファイルは、 PNG データではありません。それらはファイルであり、独自のペーストボード タイプがあります。(ファイルであるため、ドロップした場合に備えて、必ずしも完全にメモリにロードする必要はありませんよね?:D)

10.4 は NSStrings の NSArray を として提供しましたNSFilenamesPboardType。10.5 以降では、file: URL の配列NSURLPboardType提供されます。古い API を使用しているため、10.5-API に関するこのドキュメントが適用されます(10.6 では、ペーストボード API が完全にオーバーホールされ、iOS のように動作します)。

于 2010-08-05T08:58:36.737 に答える