0

ファインダーのアプリアイコンをクリックすることとドッククリックを区別したいと思っています。

何が呼ばれた applicationShouldHandleReopenかを知ることができますか、それを行う別の方法はありますか?

4

1 に答える 1

1

applicationShouldHandleReopen:hasVisibleWindows:アプリケーションのデリゲートに送信されます。委任メッセージは通常、委任オブジェクト(この場合はアプリケーションオブジェクト)によって送信されます。

アプリケーションオブジェクトは、reopen-application Apple Eventを処理するために、そのメッセージをデリゲートに送信します。したがって、送信者を見つけるには、そのイベント用に独自のApple Eventハンドラーをインストールし、イベントから送信者を取得します。(サンプルコードはPascalにあり、Apple Event Managerを使用していますが、Objective-CおよびNSAppleEventDescriptorに変換できます。)

とはいえ、UIの観点からは、あなたがしていることは非常に疑わしいものです。再開するということは、どのアプリケーションが再開するかに関係なく同じことを行うことを意味します。これは、FinderやDockに限定されません。一般的なケースでは、文字通り、アプリが既に開いているときにアプリを起動しようとしているのはユーザーです。

ウィンドウが開いていないときにのみ「再開」動作を実行する方が理にかなっている場合があります。Cocoaの組み込みのドキュメントベースのアプリサポートはこれを自動的に行います。応答しないapplicationShouldHandleReopen::か、戻っYESた場合、アプリケーションは新しいドキュメントを開こうとします。同じチェックを実行して(ウィンドウが開いているかどうかも通知されます)、同じ条件で目的の動作を実行できます。

于 2012-07-18T04:01:27.307 に答える