Я пытаюсь создать простой NSView, который позволит перетаскивать на него папку из Finder.Путь к папке - это only , которую я хочу, чтобы представление принималось как перетаскиваемый элемент.Я пытался следовать документации Apple , но пока ничего не работает.До сих пор я только пытался заставить представление работать с любым типом файлов, но я даже не могу этого сделать.Вот что у меня есть:
-(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:
не вызывается, когда я перетаскиваю папку в представление.Я пропустил шаг?