2016-04-18 8 views
5

OS Xユーザーが自分のアプリケーションだけでなくOS Xのファイルをドラッグしているときに通知を受けようとしています。私は私のデスクトップまたはFinderからファイルをドラッグを開始するとき、ハンドラが呼び出されているが、それはとも呼ばれている、 -Cocoaでのグローバルファイルドラッグイベントの登録

[NSEvent addGlobalMonitorForEventsMatchingMask:NSLeftMouseDraggedMask handler:^(NSEvent* event) { 
    NSPasteboard* pb = [NSPasteboard pasteboardWithName:NSDragPboard]; 
    NSLog(@"%@", [pb propertyListForType:NSFilenamesPboardType]); 
}]; 

これは部分的に動作します:次のように

私の現在のアプローチは、NSEventaddGlobalMonitorForEventsMatchingMask:handler:を使用していました私が左マウスドラッグを含む他のすべての操作を実行すると、例えば窓を動かす。問題は、NSDragPboardに最新のドラッグされたファイルURLが含まれているように見えることです。ファイルを解放してウィンドウを移動させると、これらの操作を区別することが難しくなります。

TL; DR - 私はシステム全体のファイルドラッグ操作に興味があります。ドラッグされたファイル自体に関する情報は必要ありません。ファイルのドラッグ操作が開始または停止されたという情報だけです。私はこの質問のための可能な解決策へのヒントを感謝します。アップルDTSに話を聞いた後

答えて

2

は、これが最も可能性の高いバグです。私はこの問題に対してrdar://25892115を提出しました。現在、私の元の質問を与えられたAPIで解決する方法はないようです。私の問題を解決するために

、私は今、カーソルの下の項目は、ファイル(kAXFilenameAttributeがNULLでない)であるかどうかを把握するアクセシビリティAPIを使用しています。

関連する問題