2

次のコードは、アプリでのマウス ドラッグを抑制しません。

[NSEvent addLocalMonitorForEventsMatchingMask:NSLeftMouseDraggedMask handler:^(NSEvent *event) {
   return (NSEvent *)nil;
}];

アプリ内で UI 要素をドラッグすることはできます。私の知る限りnil、ブロック内に戻ると、イベントはアプリにディスパッチされません。私は何が欠けていますか?

4

1 に答える 1

3

I'm not quite sure what you mean by "drag UI elements", but I suspect that this note in the docs:

Your handler will not be called for events that are consumed by nested event-tracking loops such as control tracking, menu tracking, or window dragging...

が解説です。NSResponderクリックされたボタンなどのさまざまなサブクラスは、 「プライベート トラッキング ループ」に入り、ループを終了する特定のイベントを受け取るまで、すべてのイベントを取得します。

そのブロック内にログ ステートメントを配置し、予期したときに実際にイベントが渡されていることを確認する必要があります。

于 2011-11-26T08:34:07.893 に答える