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