ココアでイベントをリッスンするために addGlobalMonitorForEventsMatchingMask を使用しています。
[NSEvent addGlobalMonitorForEventsMatchingMask:NSLeftMouseDraggedMask
handler:^(NSEvent *event) {
NSLog(@"Dragged...");
}];
ウィンドウをドラッグ/移動しているかどうかを知りたいのですが(つまり、どのウィンドウであるかを知りたいのですが、コマンドを押したままウィンドウをドラッグすると、私が知る限りフォーカスが得られませんが、フォーカスされたウィンドウを見つけることができます。)
では、ウィンドウをドラッグしているかどうかを検出できますか?
アップデート:
これでクラス " SATest : NSObject <NSWindowDelegate>
" ができました。このクラスで windowDidMove メソッドを実装します (後でおそらく windowWillMove も実装します)。私の質問は次のとおりです。すべてのアプリのすべてのウィンドウにデリゲートをアタッチするにはどうすればよいですか?
更新 2:
画面上で開いているすべてのウィンドウのリストを見つけることができます。
AXUIElementRef _systemWideElement;
_systemWideElement = AXUIElementCreateSystemWide();
CFArrayRef _windows;
AXUIElementCopyAttributeValues(_systemWideElement, kAXWindowsAttribute, 0, 100, &_windows);
次に、ウィンドウを反復処理する必要があり、それぞれが NSWindow であるため、デリゲートを追加できます。[window setDelegate:self];
更新 3: 明確にするために、この質問は、すべてのアプリのすべてのウィンドウのドラッグの検出に関するものです。自分のアプリのウィンドウだけではありません。
また、私はこのイベントとウィンドウ管理については非常に新しいので、答えを短くする必要はありません。たくさん読んでうれしいです:P
ありがとう!-P