我想在鼠标移动并获得屏幕上的位置时收到通知。我试过这个:
[NSEvent addGlobalMonitorForEventsMatchingMask:NSMouseMovedMask handler:^(NSEvent *event) {
CGPoint location = [NSEvent mouseLocation];
NSLog(@"Position: %@", NSStringFromPoint(location));
}];
然而,只要鼠标在我的应用程序窗口中,这似乎才有效。一离开,我就不会得到通知。直到我再次进入窗口。这个事件不应该是全球性的吗?
更新
我提取了有问题的代码并制作了一个单独的示例项目(Dropbox-Link)。可以肯定的是,没有其他任何东西可以干扰它。这是一个干净的项目,只有applicationDidFinishLaunching:
中的代码。我得到了相同的结果,这真的很奇怪。我向youtube上传了一个视频:http://www.youtube.com/watch?v=I3AKgmURaMk。
这些是我的观察:
答案 0 :(得分:1)
它应该工作,我看到窗口启动但不在前台时的奇怪行为。我注意到,如果应用程序在后台但不在Dock中,那么当鼠标在前景中的窗口之间转换时,您将只获得事件。最小化应用程序似乎解决了这个问题..我在cocoa dev / ObjC上很新...我可能错了,但我注意到当我最小化我的应用程序时,我得到所有事件。