Я пытаюсь создать приложение, которое позволяет пользователям перетаскивать файлы из 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];
По-прежнему ничего. Так в чем же я ошибся?
Спасибо!