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