Как получить позицию курсора относительно окна в Mac OS X? - PullRequest
8 голосов
/ 18 сентября 2011

Я могу использовать [NSEvent mouseLocation], чтобы получить местоположение курсора, но это дает мне координаты экрана.Как получить координаты курсора относительно вида, когда он в нем?Я искал документацию Apple и не смог найти ответ.

Если это что-то изменит, я захочу постоянно восстанавливать положение мыши, так как оно будет использоваться при каждом обновлении кадра.

Ответы [ 3 ]

11 голосов
/ 11 ноября 2014

Для полноты, есть прямой способ получить положение мыши в оконных координатах (используя NSWindow).В зависимости от вашей компоновки окна это может быть эквивалентно координатам представления.

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

Возвращенные координаты находятся в координатах окна, поэтому, если мышь находится слева от окна или под ним,отрицательное значение возвращается.Если мышь находится справа / над окном, координата будет превышать размер окна.

8 голосов
/ 18 сентября 2011
NSPoint myPoint = 
    [myView convertPoint:[myWindow convertScreenToBase:[NSEvent mouseLocation]]
                fromView:nil];
7 голосов
/ 18 сентября 2011
- (void)mouseMoved:(NSEvent *)event
{
    NSPoint locationInView = [self convertPoint:[event locationInWindow]
                                       fromView:nil];
}

Также убедитесь, что вы включили события mouseMoved:

[window setAcceptsMouseMovedEvents:YES];
...