objective-c – 在Cocoa中观察屏幕上的全局鼠标位置?

objective-c – 在Cocoa中观察屏幕上的全局鼠标位置?,第1张

概述我想在鼠标移动并获得屏幕上的位置时收到通知.我试过这个: [NSEvent addGlobalMonitorForEventsMatchingMask:NSMouseMovedMask handler:^(NSEvent *event) { CGPoint location = [NSEvent mouseLocation]; NSLog(@"Position: %@", NSSt 我想在鼠标移动并获得屏幕上的位置时收到通知.我试过这个:

[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.

这些是我的观察

>启动应用程序后,无论何时移动鼠标,都不会发送任何事件.
>单击应用程序窗口将以某种方式激活事件传递.现在我收到NSMouseMovedMask事件,无论我在哪里移动鼠标(这是我想要实现的).
>单击返回Xcode不会改变任何内容.我一直在接受这些活动.
>但是,将焦点移回我的应用程序会导致奇怪的行为.当我将鼠标移到Xcode上时,我只在窗口的某些部分上获取事件,而某些部分似乎吸收了该事件.更具体地说,我没有通过编辑器或日志视图接收事件.我只在鼠标移动到灰色分割视图分隔符区域(其中嵌入了标签栏)时才接收它们.

解决方法 它应该工作,我已经看到窗口启动但不在前台时的奇怪行为.我注意到,如果应用程序在后台但不在Dock中,那么当鼠标在前景中的窗口之间转换时,您将只获得事件.最小化应用程序似乎解决了这个问题..我在cocoa dev / ObjC上很新…我可能错了,但我注意到当我最小化我的应用程序时,我得到所有事件. 总结

以上是内存溢出为你收集整理的objective-c – 在Cocoa中观察屏幕上的全局鼠标位置?全部内容,希望文章能够帮你解决objective-c – 在Cocoa中观察屏幕上的全局鼠标位置?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1071736.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存