【问题标题】:NSWindow attached to cursorNSWindow 附加到光标
【发布时间】:2012-10-18 08:12:01
【问题描述】:
我想制作一个自定义面板,在当前光标位置显示缩放。
就像“Sip”一样。
我在网上搜索了示例,但没有找到任何具体的内容。
我找到了NSEvent 的addGlobalMonitorForEventsMatchingMask:handler: 和addLocalMonitorForEventsMatchingMask:handler: 方法。
现在我可以设置窗口的框架原点。
但我不确定这是否真的是正确的解决方案。
有没有更好的方法来做到这一点?
谁能指出我的一些示例代码?
【问题讨论】:
标签:
objective-c
xcode
macos
cocoa
nscursor
【解决方案1】:
基本上就是这样。
您还可以使用 Quartz Event Tap 函数系列 CGEventTap,因为它可以在 Mac 应用程序切换器和 Exposé 或 Mission Control 或 Dashboard 等事件期间提供更多响应。但是,它的设置有点困难,并且使用了 C 回调方法,在某些事情上使用起来有点困难。
Quartz Event Taps 在其他方面是一样的,但可能会稍微快一些。
如果你使用它,请务必使用函数CGPoint CGEventGetUnflippedLocation(CGEventRef aCGEvent)
如:
CGPoint eventLocation = CGEventGetUnflippedLocation(aCGEvent);
这将确保您的 y 坐标与 Cocoa 的其余部分一样位于左下方。
否则使用它的兄弟CGEventGetLocation(),由于一些奇怪的命名蹩脚的原因并不表示它返回翻转坐标。 (但文档确实说明了这一点)