2017-01-21 65 views
0

我有一個自定義的NSButton類,並且想要檢查(在viewWillDraw之內)用戶當前的鼠標位置是否在按鈕框內。證明遊標的位置是否在NSButton的框架內

我得到使用NSEvent.mouseLocation()鼠標的位置,但是這給了我一個絕對NSPoint相對於屏幕本身。

self.frame(= NSButton.frame)而是返回一些相對於座標,指向按鈕超級視圖。因此,self.frame.contains(NSEvent.mouseLocation())不起作用,我不知道如何解決這個問題!

感謝任何幫助!

+0

您可以嘗試將鼠標位置轉換爲按鈕框架。在ios uiview中有方法將點從一個視圖轉換爲其他視圖,反之亦然。 – Dasem

+0

@Dasem感謝您的回覆!無法弄清楚如何。 'NSButton'不是一個視圖。 – ixany

回答

1

您可以NSTrackingAreaOptions.MouseEnteredAndExited添加NSTrackingArea到您的按鈕

或者您可以使用此代碼

轉換NSPoint到上海華的座標系統

let point = self.superview!.convert(self.window!.mouseLocationOutsideOfEventStream, from: nil)

,然後只用自我。 frame.contains

if self.frame.contains(point)

+0

感謝您的回覆!在我的情況下,我特別需要在'viewWillDraw'中檢查這個,因爲我可能沒有輸入鼠標,我想根據它改變按鈕的行爲。 – ixany

+0

現在有幫助嗎? –

+0

非常感謝Vitaly!現在它工作正常。 – ixany

相關問題