ユーザーがファイルを 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];
まだ何もありません。では、どこで間違ったのでしょうか。
ありがとう!