2012-06-30 47 views
4

隨着可可,我該如何檢查鼠標是否在我的指定窗口內?我有下面的代碼檢測它是否在窗口的邊界內,但是如果窗口關閉/隱藏但鼠標仍然在該矩形中,它會錯誤地打印它的內部。如果另一個窗口位於頂部,它也會錯誤地說它在裏面,但是鼠標位於我正在測試的窗口的區域內。如何測試鼠標是否在指定窗口內?

NSPoint mouse = [NSEvent mouseLocation]; 

BOOL mouseInside = NSPointInRect(mouse, self.window.frame); 

if (!mouseInside) { 
    NSLog(@"mouse isn't inside"); 
} else { 
    NSLog(@"mouse is inside"); 
} 

我已經試過這樣的事情:

​​

,但它總是會打印出 「老鼠在裏面」。

任何想法?或者正在設立一個跟蹤區域的唯一途徑? Freenode上

+0

在建立一個跟蹤區域不是唯一的* *方式,它是最好的* *方式,因爲它減輕了您自己輪詢和/或轉換座標系統的需要。 –

回答

6

mikeash向我指出NSWindow's windowNumberAtPoint:

下面的代碼顯示爲工作需要:

if ([NSWindow windowNumberAtPoint:mouse belowWindowWithWindowNumber:0] != self.window.windowNumber) { 
    NSLog(@"mouse outside"); 
} 
相關問題