0

2 つのウィンドウを持つ Cocoa アプリケーションを作成しています。これらのウィンドウを両方とも非表示にし、スクリーン キャプチャ機能を呼び出してから、ウィンドウを復元したいと考えています。私が使う

[mainWindow orderOut:self];

ウィンドウを非表示にしますが、これを行うとアプリケーション全体が閉じます。私の AppDelegate には次の関数があります。

- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication*)sender 
{
    return YES;
}

ウィンドウを間違って非表示にしていますか? orderOut を使用しているときに AppDelegate がウィンドウが閉じられたと考えるのはなぜですか?

私のアプリは、AppDelegate で上記のメソッドを使用しなくても完全に動作します。実際にすべてのウィンドウを閉じたときにアプリケーションを終了する最終ステップとして追加しました。アプリケーションを閉じずにウィンドウを一時的に非表示にする方法を誰か提案できますか?

4

2 に答える 2

1

私は忘れます...あなたは窓のVisible:を設定できますか?もしそうなら、それはそれを解決するでしょう。

他の唯一のことは、プログラムでウィンドウを閉じるときにBOOLを設定することです... iClosed Windows=YES。次に、ウィンドウを復元するときにNOに設定します...次に、delegateメソッドでそのブール値を確認し、それに応じてYESまたはNOを返します。

于 2013-02-07T14:47:37.910 に答える
0

メソッドapplicationShouldTerminateAfterLastWindowClosedを削除します。アプリケーションは開いたままになります。これは OS X での通常の動作です。Chrome または Safari のすべてのウィンドウを閉じても、開いたままになります。OS X は、iOS のように、必要に応じてそれらを閉じます。

于 2013-02-09T21:07:39.887 に答える