2011-09-18 184 views
8

我可以使用[NSEvent mouseLocation]來獲取光標的位置,但是這給了我的屏幕座標。如何獲取光標相對於視圖的座標?我搜索了Apple的文檔並找不到答案。如何在Mac OS X中獲取相對於窗口的光標位置?

如果它有所作爲,我會希望不斷檢索鼠標位置,因爲它將用於每個幀更新。

回答

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

另外,還要確保你已經啓用的mouseMoved事件:

[window setAcceptsMouseMovedEvents:YES]; 
+0

'我認爲''theEvent'應該是'event'。 – smacdonald

+1

編輯,謝謝。 – omz

7
NSPoint myPoint = 
    [myView convertPoint:[myWindow convertScreenToBase:[NSEvent mouseLocation]] 
       fromView:nil]; 
+0

'convertScreenToBase'已棄用 – rraallvv

9

爲了完整起見,有一個直接的方式來獲得窗口座標(使用NSWindow)鼠標位置。根據您的窗口布局,這可能等同於視圖的座標。

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

返回的座標位於窗口座標系中,所以如果鼠標位於窗口左下方,則返回負值。如果鼠標位於窗口右上方,則座標將超過窗口的大小。

相關問題