Я пытаюсь создать простой 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) sender
{
NSLog(@"preparing for drag");
return YES;
}
вызывается метод initWithFrame:
, но когда я пытаюсь перетащить в вид, метод prepareForDragOperation:
, кажется, никогда не вызывается. Мои вопросы:
prepareForDragOperation:
?Обновление
Я обновил свой метод registerForDragTypes:
с каждым типом, который я смог найти. Теперь все выглядит так:
[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:
не вызывается, когда я перетаскиваю папку в вид. Я пропустил шаг?