0

続行する前に、マウスが (メイン) メニュー バー上にあるかどうかを検出する必要があるメソッドを呼び出しています。そのようなメソッドを定義するにはどうすればよい- (BOOL)isMouseOverMenuですか?

マウスが実際にメニューバーにあることを確認したいので、アプリがフルスクリーンでメニューを隠している場合、またはマウスが2番目のモニターのメニューバーと同じ座標にある場合はfalseを返す必要がありますメニューバーがありません。また、メニュー バーの他の項目のいずれかにある場合も true を返す必要がありますが、ポップアップ メニューの場合は必ずしもそうではありません。

注:これが起動したときに、私のウィンドウが常にキーウィンドウになるとは限りません。

4

1 に答える 1

1

NSMenuのドキュメントによると、NSMenuDidBeginTrackingNotificationメニューの追跡が開始されると投稿されます。

この通知のオブザーバーを追加すると、マウスがメニューの上にあるときはいつでも通知されるはずです。

アップデート:

これはできないと思います。はNSMenuDidBeginTrackingNotification、ユーザーがメニューをクリックしたときにのみ投稿され、マウスが単にその上にあるときではありません。

NSMenuから派生していないNSResponderため、マウス メソッドの 1 つをオーバーライドして検出することはできません。

Apples のドキュメントでは、カーソルがボタンを押されていない長方形の領域上にあるとマウス トラッキングが定義されているため、これはバグであると考えています。他に解決策が見つからない場合は、バグ レポートの提出を検討します。

于 2012-06-16T17:17:33.810 に答える