【发布时间】:2010-06-07 06:48:03
【问题描述】:
好的,我设置了 NSOutlineView,如果将 pdf 拖入 NSOutlineView,我希望它能够捕获 PDF。
我的第一个问题,我有以下代码:
[outlineView registerForDraggedTypes:[NSArray arrayWithObjects:NSStringPboardType, NSFilenamesPboardType, nil]];
在我看到的所有苹果文档和示例中,我还看到像 MySupportedType 这样的东西是注册用于拖动的对象。这是什么意思?我是否将代码更改为:
[outlineView registerForDraggedTypes:[NSArray arrayWithObjects:@"pdf", NSStringPboardType, NSFilenamesPboardType, nil]];
目前我已经将它设置为识别拖放,一旦接受拖动,我什至可以让它吐出被拖动文件的 URL,但是,这引出了我的第二个问题。我想保留这些 PDF 应用程序端的副本。我想,如果我错了,请纠正我,最好的方法是从剪贴板上获取数据,将其保存在某个持久性存储中,就是这样。 (相对于使用某种复制命令并将文件复制到应用程序主管。)
话虽如此,我不知道该怎么做。我有代码:
- (BOOL)outlineView:(NSOutlineView *)ov acceptDrop:(id <NSDraggingInfo>)info item:(id)item childIndex:(NSInteger)childIndex
{
NSPasteboard *pboard = [info draggingPasteboard];
NSURL *fileURL;
if ( [[pboard types] containsObject:NSURLPboardType] ) {
fileURL = [NSURL URLFromPasteboard:pboard];
// Perform operation using the file’s URL
}
NSData *data = [pboard dataForType:@"NSPasteboardTypePDF"];
但这实际上从来没有得到任何数据。就像我之前说的,它确实获取了 URL,而不是数据。 有没有人对如何进行这件事有任何建议?非常感谢!
【问题讨论】:
标签: cocoa drag-and-drop