7

を使用[NSEvent mouseLocation]してカーソルの位置を取得できますが、これにより画面座標が得られます。カーソルがビューにあるときに、ビューに対するカーソルの座標を取得するにはどうすればよいですか? Apple のドキュメントを検索しましたが、答えが見つかりませんでした。

それが違いを生む場合は、フレームの更新ごとに使用されるため、マウスの位置を継続的に取得したいと考えています。

4

3 に答える 3

11

完全を期すために、(NSWindow を使用して) ウィンドウ座標でマウスの位置を取得する直接的な方法があります。ウィンドウのレイアウトによっては、これがビューの座標に相当する場合があります。

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

返される座標はウィンドウ座標であるため、マウスがウィンドウの左/下にある場合は負の値が返されます。マウスがウィンドウの右または上にある場合、座標はウィンドウのサイズを超えます。

于 2014-11-10T23:21:16.403 に答える
8
NSPoint myPoint = 
    [myView convertPoint:[myWindow convertScreenToBase:[NSEvent mouseLocation]]
                fromView:nil];
于 2011-09-18T19:48:01.010 に答える
7
- (void)mouseMoved:(NSEvent *)event
{
    NSPoint locationInView = [self convertPoint:[event locationInWindow]
                                       fromView:nil];
}

また、mouseMoved イベントが有効になっていることを確認してください。

[window setAcceptsMouseMovedEvents:YES];
于 2011-09-18T19:50:03.597 に答える