我正在尝试构建一个允许用户将文件从 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];
依然没有。那么我哪里出错了?
谢谢!