我使用addGlobalMonitorForEventsMatchingMask聽取事件可可:可可窗口中拖動
[NSEvent addGlobalMonitorForEventsMatchingMask:NSLeftMouseDraggedMask
handler:^(NSEvent *event) {
NSLog(@"Dragged...");
}];
雖然我想知道如果我拖動/移動窗口(和窗口,是的,我能找到儘管我知道,當按住命令並拖動一個窗口時,聚焦的窗口不會聚焦)。
因此,我可以檢測是否要拖動窗口嗎?
更新:
我現在有一個類:(後來也許windowWillMove太)「SATest : NSObject <NSWindowDelegate>
」中,我實現了windowDidMove方法雖然,現在下一步將安裝這一個窗口,對不對?所以我現在的問題是:如何將代理附加到所有應用程序的所有窗口?
更新2:
我現在可以發現屏幕上所有打開窗口的列表:
AXUIElementRef _systemWideElement;
_systemWideElement = AXUIElementCreateSystemWide();
CFArrayRef _windows;
AXUIElementCopyAttributeValues(_systemWideElement, kAXWindowsAttribute, 0, 100, &_windows);
現在我要遍歷窗口,每一個的得到它的NSWindow這樣我就可以添加我的代表:[window setDelegate:self];
更新3:要清楚,這個問題是關於檢測拖動所有應用程序的所有窗口。不僅是我自己的應用程序的窗口。
此外,我很新的事件和窗口管理的東西,所以沒有必要保持你的答案總之我很高興地讀了很多:P
謝謝! -P
我有點困惑在這裏,我得到了我的課: 「@interface SATEST:NSObject的」 和我實現了windowDidMove方法。雖然我如何將它添加到窗口? (我從哪裏得到這個窗口:P我試圖讓所有窗口的這個移動的東西打開所有的應用程序。) –
你需要在你的筆尖文件中創建一個實例,並按住Ctrl鍵從對象拖動到窗口將其設置爲該窗口的代表。或者,您可以在AppDelegate上實現以保存在nib文件中創建新對象。 –
我還沒有嘗試過,但是這僅僅是我自己的應用程序的窗口?我試圖從其他應用程序中獲取它。我想知道當前任何應用程序的任何窗口正在移動。雖然要嘗試一些東西,謝謝! –