これはおそらく、ドラッグ セッションが「マウス トラッキング ループ」を使用してドラッグ イベントを処理しているためです。これにより、ドラッグ イベントを除く他のすべてのイベントがターゲットに送信されるのを効果的にブロックします。これについては、こちらのイベント ドキュメントを参照してください。
アイテムをアプリにドラッグしてもこれが行われない理由は、ドロップを受け取るアプリではなく、ドラッグ セッションを開始するアプリのみがイベント ブロックされるためです。
そうは言っても、これmouseDragged
を使用してイベント中にキーイベントをキャプチャしようとするnextEventMatchingMask:untilDate:inMode:dequeue:
と、イベントキューにある可能性のあるキーイベントをポップオフできるはずです。
また、上記のリンクのドキュメントでは、マウスのドラッグ操作中のキー イベントの処理について説明しています。ただし、これらの例は、ドラッグ セッションを開始するときに特に適しているわけではありませんdragImage:at:offset:event:pasteboard:source:slideBack:
がperformKeyEquivalent
、言及されているように見たり、ドラッグ セッション中に NSWindowsendEvent:
がイベントを受け取っているかどうかを確認したりすることもできます。