【发布时间】:2011-11-15 04:01:43
【问题描述】:
我正在尝试创建一个简单的 NSView,它允许将 Finder 中的文件夹拖到它上面。文件夹路径是 only 我希望视图接受为可拖动项目的东西。我一直在尝试关注Apple documentation,但到目前为止没有任何效果。到目前为止,我只是试图让视图适用于任何文件类型,但我什至似乎都做不到。到目前为止,这是我所拥有的:
-(id) initWithFrame:(NSRect)frameRect
{
if (self = [super initWithFrame:frameRect])
{
NSLog(@"getting called");
[self registerForDraggedTypes:[NSArray arrayWithObjects:NSPasteboardTypeString,
NSPasteboardTypePDF,
NSPasteboardTypeTIFF,
NSPasteboardTypePNG,
NSPasteboardTypeRTF,
NSPasteboardTypeRTFD,
NSPasteboardTypeHTML,
NSPasteboardTypeTabularText,
NSPasteboardTypeFont,
NSPasteboardTypeRuler,
NSPasteboardTypeColor,
NSPasteboardTypeSound,
NSPasteboardTypeMultipleTextSelection,
NSPasteboardTypeFindPanelSearchOptions, nil]];
}
return self;
}
-(BOOL) prepareForDragOperation: (id<NSDraggingInfo>) sender
{
NSLog(@"preparing for drag");
return YES;
}
initWithFrame: 方法被调用,但是当我尝试将其拖入视图时,prepareForDragOperation: 方法似乎从未被调用。我的问题:
- 我做错了什么?为什么
prepareForDragOperation:没有接到电话? - 我需要做什么才能让拖动操作只支持拖动文件夹?
更新
我用我能找到的每一种类型更新了我的registerForDraggedTypes: 方法。现在看起来像这样:
[self registerForDraggedTypes:[NSArray arrayWithObjects:NSPasteboardTypeString,
NSPasteboardTypePDF,
NSPasteboardTypeTIFF,
NSPasteboardTypePNG,
NSPasteboardTypeRTF,
NSPasteboardTypeRTFD,
NSPasteboardTypeHTML,
NSPasteboardTypeTabularText,
NSPasteboardTypeFont,
NSPasteboardTypeRuler,
NSPasteboardTypeColor,
NSPasteboardTypeSound,
NSPasteboardTypeMultipleTextSelection,
NSPasteboardTypeFindPanelSearchOptions,
NSStringPboardType,
NSFilenamesPboardType,
NSPostScriptPboardType,
NSTIFFPboardType,
NSRTFPboardType,
NSTabularTextPboardType,
NSFontPboardType,
NSRulerPboardType,
NSFileContentsPboardType,
NSColorPboardType,
NSRTFDPboardType,
NSHTMLPboardType,
NSURLPboardType,
NSPDFPboardType,
NSVCardPboardType,
NSFilesPromisePboardType,
NSMultipleTextSelectionPboardType, nil]];
我注意到当我将文件夹拖到视图中时,prepareForDragOperation: 方法没有被调用。我错过了一步吗?
【问题讨论】:
-
有趣。
NSFilenamesPboardType是为我工作的那个。我在大纲视图中使用acceptDrop:。不过,prepareForDragOperation:并没有在我的大纲视图中被调用。您是否也尝试过实现performDragOperation:和concludeDragOperation:?
标签: macos cocoa drag-and-drop osx-lion