如何让我的窗口从另一个在 MacOS 上拖动的窗口中窃取焦点?
Posted
技术标签:
【中文标题】如何让我的窗口从另一个在 MacOS 上拖动的窗口中窃取焦点?【英文标题】:How do I make my window steal focus from another window being dragged on MacOS? 【发布时间】:2022-01-12 22:59:42 【问题描述】:我目前正在开发一个辅助功能应用程序,该应用程序的功能是在按下两个鼠标按钮拖动窗口时触发的。我的应用程序需要打开一个新的无边框窗口并从正在拖动的窗口中窃取焦点(并防止窗口被进一步拖动)。我的目标是最终在焦点窃取窗口的帮助下调整拖动窗口的大小。我该怎么做?
我在 Swift 上使用 Cocoa 框架。这是我尝试过的:
NSApp.activate(ignoringOtherApps: true)
myAccessibilityWindow.makeKeyAndOrderFront(nil)
辅助功能窗口按预期排列在前面,但在我停止拖动触发窗口之前,它不会窃取焦点(辅助功能窗口内不会触发鼠标事件)。这是不希望的,因为我要尽快窃取鼠标焦点并防止窗口被进一步拖动。
【问题讨论】:
【参考方案1】:除了使辅助功能窗口成为关键窗口之外,您还必须模拟鼠标向上事件才能停止拖动。
let mouseLocation = NSEvent.mouseLocation
let source = CGEventSource.init(stateID: .hidSystemState)
let mouseUp = CGEvent(mouseEventSource: source, mouseType: .leftMouseUp, mouseCursorPosition: mouseLocation, mouseButton: .left)
mouseUp?.post(tap: .cghidEventTap)
非常感谢Tarun Lalwani。
【讨论】:
以上是关于如何让我的窗口从另一个在 MacOS 上拖动的窗口中窃取焦点?的主要内容,如果未能解决你的问题,请参考以下文章
Tkinter:鼠标拖动一个没有边框的窗口,例如。覆盖直接(1)