IKPicutreTakerを起動し、設定されている場合は画像をファイルに保存する小さなOSXCocoaアプリがあります。applicationShouldTerminateAfterLastWindowClosed:を使用して、pictureTakerが閉じられたときにアプリケーションを閉じます。これは、設定(目的の画像を選択したときに実行されます)またはキャンセルを押したときにすべて正常に機能しますが、ウィンドウの左上にある赤い矢印をクリックすると、アプリケーションが終了しません。この方法でウィンドウが閉じます。これは意図された機能ですか、それとも私は何か間違ったことをしていますか(フラグを設定していませんか?)。また、このボタンを無効にする方法はありますか?
1 に答える
赤いボタンをクリックしてもアプリケーションは閉じません。これは、その動詞がその名詞と一致しないためです。赤いボタンは、それが表示されているウィンドウを閉じます。アプリケーションを終了しません。(アプリケーションは、Mac OSX上で複数のウィンドウを持つことができます。
applicationShouldTerminateAfterLastWindowClosed:
ユーザーが画面の最後のウィンドウを閉じるたびに(赤いボタンをクリックするか、[ファイル]メニューから[閉じる]を選択するか、またはその他の方法で)、NSApplicationオブジェクトはそのデリゲートにメッセージを送信しますapplicationShouldTerminateAfterLastWindowClosed:
。アプリケーションを終了するかどうかを尋ねます。デリゲートがメッセージに応答してを返すYES
と、アプリケーションは自動的に終了します。
<code> applicationShouldTerminateAfterLastWindowClosed:をどのように「使用」しているかを正確に言うことはできません。あるオブジェクトに送信するだけの場合は、質問をして(「最後のウィンドウを閉じた後にアプリケーションを終了する必要がありますか?」)、その答えを無視するため、機能しません。オブジェクトにメソッドを実装したが、そのオブジェクトがアプリケーションのデリゲートではない場合、それも機能しません。アプリケーションオブジェクトは、そのメッセージをデリゲートにのみ送信します。
YES
デリゲートにメソッドを実装し、ユーザーが最後のウィンドウを閉じたときにアプリケーションを終了するのが適切なときに戻る必要があります。