0

- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flagDock アイコン ( )をクリックするとメニューが開くアプリがあります。

メニューは、閉じられるまで現在のスレッドの実行を「停止」します。applicationShouldHandleReopen:そのため、メニューを閉じてからの電話しか受けません。

キューにそのようなメソッド呼び出しがあるかどうかをタイマーで確認できると思いました。しかし、これは可能ですか?または、私の問題を処理する他の方法はありますか? (ドックアイコンの2回目のクリックでメニューを閉じたい)

4

1 に答える 1

0

私の問題に対して見つけた解決策:

Cocoa のアクセシビリティ API を使用してアプリケーションのドック アイコンの位置を取得するこのコードを使用して、ドック アイコンの位置とサイズにアクセスしました。

次に、マスクとして NSEvent+ (id)addGlobalMonitorForEventsMatchingMask:(NSEventMask)mask handler:(void (^)(NSEvent*))blockを使用NSLeftMouseUpすると、画面上のすべてのクリックをキャッチすることができます

最後に、クリックが DockIcon の CGRect であるかどうかを確認する必要がありました。applicationShouldHandleReopen:(メニューが閉じられた後、クリックすると呼び出されるため、少しトリックする必要がありました)

于 2012-07-05T02:36:01.880 に答える