我可以使用[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