2011-12-13 119 views
2

我有一個自定義視圖類,它接收鼠標事件的正確的座標。我沒有得到正確的mouseDown或mouseUp事件座標。無論我在視圖內點擊哪裏,我都會得到相同的錯誤座標。mouseDown事件沒有顯示點擊

這是我在我的自定義的NSView類

- (void)mouseDown:(NSEvent *)theEvent 
{ 
    NSPoint coordinateInBaseWindow = theEvent.locationInWindow; 

    NSPoint coordinateInView = [self convertPoint:coordinateInBaseWindow fromView:nil]; 
    NSLog(@"left mouse down (x,y) =(%f,%f)", coordinateInView.x, coordinateInView.y); 
} 

功能我有mouseUp事件的類似處理。

現在輸出總是

左鼠標向下(X,Y)=(0.000000,-1.996910)

左鼠標向上(X,Y)=(0.000000,0.000000)

無論我點擊視圖中,鼠標左鍵的協調下總是(0.000000,-1.996910)和鼠標左鍵,則始終(0.000000,0.000000)。

  1. 我在做什麼錯?爲什麼我無法獲得鼠標點擊事件的正確座標?
  2. 鼠標按下和MouseUp共同打造一個點擊。 mouseDown和mouseUp的座標不應該相等嗎?爲什麼他們在這種情況下不同?

編輯1:

由於omz指出,我應該用convertPoint:fromView:但是這也沒有解決問題。我仍然獲得相同的座標。

編輯2: 我在NSLog格式說明符不正確,這給我完全錯誤的結果。

回答

4

從窗口轉換座標,你必須使用convertPoint:fromView:nil作爲視圖參數。你的轉換恰恰相反。

+0

我有固定的代碼,但我仍然得到同樣的結果。 '(0.000000,-1.996910)'和'(0.000000,0.000000)'。 –

+0

你的(編輯的)代碼在這裏工作得很好。你的代碼中可能會影響結果的其他任何內容? – omz