在Mac OS X中如何获取光标相对于窗口的位置?

7
我可以使用[NSEvent mouseLocation]来获取鼠标的位置,但这会给我屏幕坐标。当光标在视图内时,我如何获得光标相对于视图的坐标?我查阅了苹果文档,但没有找到答案。
如果有区别的话,我将想要不断地检索鼠标位置,因为它将在每个帧更新中使用。
3个回答

12

为了完整起见,有一种直接获取窗口坐标中鼠标位置的方法(使用NSWindow)。 根据您的窗口布局,这可能等同于视图的坐标。

NSWindow *myWindow;
NSPoint mousePos;
...
mousePos = [myWindow mouseLocationOutsideOfEventStream];

返回的坐标是窗口坐标,因此如果鼠标在窗口左侧/下方,则返回负值。如果鼠标在窗口右侧/上方,则坐标将超过窗口大小。


8
NSPoint myPoint = 
    [myView convertPoint:[myWindow convertScreenToBase:[NSEvent mouseLocation]]
                fromView:nil];

convertScreenToBase 已被弃用。 - rraallvv

7
- (void)mouseMoved:(NSEvent *)event
{
    NSPoint locationInView = [self convertPoint:[event locationInWindow]
                                       fromView:nil];
}

同时确保您已启用了鼠标移动事件:

[window setAcceptsMouseMovedEvents:YES];

我认为theEvent应该改为event - Stewart Macdonald

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接