私のアプリケーションでは、メインウィンドウとステータスアイテムの両方にドラッグできます。
- スタックからウィンドウにファイルをドラッグすると、完全に機能します。
- Finderからウィンドウにファイルをドラッグすると、完全に機能します。
- Finderからステータスアイテムにファイルをドラッグすると、完全に機能します。
- スタックからステータスアイテムにファイルをドラッグすると、機能しません。
ウィンドウとステータスアイテムの両方で、まったく同じドラッグアンドドロップ処理コードが使用されます。
面白いことに、ファイルをスタックからステータスアイテムにドラッグすると、-(NSDragOperation)draggingEntered:(id)sender {NSPasteboard * pboard;が原因で、カーソルが期待どおりに変化します。NSDragOperation sourceDragMask; メソッドは期待どおりに呼び出されます。
ただし、ファイルがドロップされると、-(BOOL)performDragOperation:(id)sender {NSPasteboard * pboard; NSDragOperation sourceDragMask; メソッドは呼び出されません。
最初のメソッドの実装は次のとおりです。
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender {
NSPasteboard *pboard;
NSDragOperation sourceDragMask;
sourceDragMask = [sender draggingSourceOperationMask];
pboard = [sender draggingPasteboard];
if ( [[pboard types] containsObject:NSColorPboardType] ) {
if (sourceDragMask & NSDragOperationGeneric) {
return NSDragOperationGeneric;
}
}
if ( [[pboard types] containsObject:NSFilenamesPboardType] ) {
if (sourceDragMask & NSDragOperationLink) {
return NSDragOperationLink;
} else if (sourceDragMask & NSDragOperationCopy) {
return NSDragOperationCopy;
}
}
return NSDragOperationNone;
}
ありがとう!