我可以使用[NSEvent mouseLocation]
来获取光标的位置,但是这给了我的屏幕坐标。如何获取光标相对于视图的坐标?我搜索了Apple的文档并找不到答案。如何在Mac OS X中获取相对于窗口的光标位置?
如果它有所作为,我会希望不断检索鼠标位置,因为它将用于每个帧更新。
我可以使用[NSEvent mouseLocation]
来获取光标的位置,但是这给了我的屏幕坐标。如何获取光标相对于视图的坐标?我搜索了Apple的文档并找不到答案。如何在Mac OS X中获取相对于窗口的光标位置?
如果它有所作为,我会希望不断检索鼠标位置,因为它将用于每个帧更新。
- (void)mouseMoved:(NSEvent *)event
{
NSPoint locationInView = [self convertPoint:[event locationInWindow]
fromView:nil];
}
另外,还要确保你已经启用的mouseMoved事件:
[window setAcceptsMouseMovedEvents:YES];
NSPoint myPoint =
[myView convertPoint:[myWindow convertScreenToBase:[NSEvent mouseLocation]]
fromView:nil];
'convertScreenToBase'已弃用 – rraallvv
为了完整起见,有一个直接的方式来获得窗口坐标(使用NSWindow)鼠标位置。根据您的窗口布局,这可能等同于视图的坐标。
NSWindow *myWindow;
NSPoint mousePos;
...
mousePos = [myWindow mouseLocationOutsideOfEventStream];
返回的坐标位于窗口坐标系中,所以如果鼠标位于窗口左下方,则返回负值。如果鼠标位于窗口右上方,则坐标将超过窗口的大小。
'我认为''theEvent'应该是'event'。 – smacdonald
编辑,谢谢。 – omz