Я пытаюсь создать приложение, которое позволяет пользователям перетаскивать файлы из Finder на значок меню для обработки.Я добился прогресса в своем путешествии, но я не могу подняться на вершину этого холма.Я попытался создать подкласс NSView и реализовать сообщения перетаскивания.
@interface CMDroppableView : NSView <NSMenuDelegate>
Я хотел не только принимать операции перетаскивания, но и предоставлять NSMenu, когда пользователь щелкает значок.Мне удалось заставить NSMenu правильно отображаться, но функциональность перетаскивания остается неуловимой.
Насколько я понимаю, мне нужно было зарегистрировать принятые типы перетаскивания, которые я сделал здесь:
-(void)awakeFromNib{
[self registerForDraggedTypes:[NSArray arrayWithObject:NSFilenamesPboardType]];
}
Перетаскивание сообщений:
-(NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender{
NSLog(@"Drag Enter");
return NSDragOperationCopy;
}
-(NSDragOperation)draggingUpdated:(id <NSDraggingInfo>)sender{
return NSDragOperationCopy;
}
-(void)draggingExited:(id <NSDraggingInfo>)sender{
NSLog(@"Drag Exit");
}
-(BOOL)prepareForDragOperation:(id <NSDraggingInfo>)sender{
return YES;
}
-(BOOL)performDragOperation:(id <NSDraggingInfo>)sender{
return YES;
}
Вот код, в котором установлено настраиваемое представление:
statusItemView = [[CMDroppableView alloc] init];
[statusItemView retain];
[statusItemView setMenu: statusMenu];
[statusItem setView: statusItemView];
Все равно ничего.Так где я ошибся?
Спасибо!