2012-06-16 60 views
0

我打電話給一些方法,它需要檢測鼠標是否在(主)菜單欄之前繼續。我怎樣才能定義這樣一種方法- (BOOL)isMouseOverMenu如何檢測鼠標是否在菜單欄上?

我想確保鼠標實際上在菜單欄中,因此,當應用程序處於全屏模式時,隱藏菜單或者當鼠標位於菜單欄的相同座標上時,它應該返回false第二臺監視器沒有菜單欄。它也應該返回true,如果它在菜單欄中的任何其他項目上,但不一定在彈出式菜單中。

注:我的窗口不會永遠是當這種火災的重要窗口。

回答

0

按照NSMenu文檔NSMenuDidBeginTrackingNotification菜單跟蹤開始時公佈。

添加觀察員此通知,每當鼠標在菜單中,您應通知。

更新:

我不認爲這是可以做到。 NSMenuDidBeginTrackingNotification僅在用戶單擊菜單時發佈,而不是在鼠標簡單地位於該菜單上時發佈。

NSMenu不是從NSResponder派生的,所以不可能通過重寫一個鼠標方法來檢測它。

我認爲這是一個錯誤如鼠標跟蹤在蘋果文檔定義爲光標被過度與無按鈕的矩形區域。如果沒有其他解決方案,我會考慮提交錯誤報告。

+0

是的,我試着加入那個觀察者,並讓選擇器日誌「結束」。只有當我點擊菜單時,它纔會登錄。也許我做錯了什麼? – Bryan

+0

我使用的'object'是'object:[NSApp mainMenu]'。 – Bryan

+0

看起來你正在做正確的事情。我有一個示例項目和'跟蹤'只有當你點擊菜單欄時才起作用。看起來NSMenu文檔有些誤導,因爲我認爲鼠標在菜單項上作爲跟蹤。我不知道如何解決這個問題,因爲NSMenu不是從NSResponder派生的,所以我想不出任何其他方式來檢測這些信息。 –

相關問題