Как получить положение курсора относительно окна в Mac OS X?

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

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


person mk12    schedule 18.09.2011    source источник


Ответы (3)


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

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

[window setAcceptsMouseMovedEvents:YES];
person omz    schedule 18.09.2011
comment
theEvent должно быть event, я думаю. - person Stewart Macdonald; 17.06.2015

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

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

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

person user3806037    schedule 10.11.2014

person    schedule
comment
convertScreenToBase устарел - person rraallvv; 25.04.2015