mac鼠标事件增量值不准确

时间:2016-11-25 02:10:33

标签: objective-c macos

在Mac OSX上,我尝试了两种方法来获取鼠标移动事件的deltaX和deltaY:

  1. deltaX / deltaY NSEvent
  2. kCGMouseEventDeltaX / kCGMouseEventDeltaY CGEventRef
  3. 但大多数情况下,返回值为(0,0)或(aValue,0)或(0,aValue),而不是非常准确的值。

    有什么建议吗?感谢。

1 个答案:

答案 0 :(得分:0)

我不是在我的开发机器上测试它,但我可以参考我们用于此类问题的源代码

首先,List<int>deltaX对您不起作用很奇怪? 我会尝试的一件事是 deltaY
查看事件的位置是否实际移动,而不使用断点。如果您使用断点测试增量,NSLog(@"POINT: %@", NSStringFromPoint([event locationInWindow]);可能会频繁触发您看不到大的增值

但无论如何,我注意到的一件事是,在我们的应用中,我们实际上也没有使用mouseMoved。也许是因为当天的开发人员遇到了和你一样的问题?但仍然很奇怪的IMO。当我本周末回到家时,我想更多地测试一下

我们实际上有一个名为deltaX/deltaY的{​​{1}}属性,每次鼠标移动时,我们做的最后一件事就是将NSPoint存储到该属性中。然后,第一次我们将lastPoint与当前locationInWindow进行比较。

但老实说,这似乎是一个糟糕的解决方案,我真的不确定为什么我们不只是使用lastPointlocationInWindow。我建议做更多调试(用deltaX)来弄清楚使用这些属性会出现什么问题