0

非ドキュメント ベースの Cocoa アプリケーション用の Xcode テンプレートからプロジェクトを作成しました。

NSWindowController起動時にインスタンス化された後、デフォルト ウィンドウ (で定義) を取得するカスタムがありますMainMenu.xib

アプリ デリゲートのウィンドウをそのままにしておくと、command-F(メニュー項目で に設定-toggleFullscreen:) でフルスクリーン モードに切り替えるか、 を押してフルスクリーンを終了できますESC

ウィンドウ コントローラーをウィンドウとして設定するとdelegate(フルスクリーンの開始/終了などで OpenGL の調整を行うためにこれが必要です)、 を押してフルスクリーンに入ることができますが、フルスクリーンをcommand+F終了することはできなくなります (command+tab別のアプリに保存して、またはcommand+Q)。

また、Apple ドキュメントでは、メニュー アクションを-toggleFullscreen: に、ターゲットを にnil設定することについて言及しています。この最後の部分は、Interface Builder でどのように行われますか? (アクションを First Responder の に接続しました-toggleFullscreen:)

私は何をすべきか?

4

1 に答える 1

1

それで、私は問題を見つけました(SOに質問を投稿することは、常に解決策を見つけるための条件のようです...)

問題のある行はデリゲートを設定していませんでしたが、フルスクリーンモードに入った後にウィンドウに対して行っていたことです。[window setStyleMask:NSBorderlessWindowMask];特に、以下のコードの次の行をコメントアウトするとすぐに :

- (void) windowDidEnterFullScreen:(NSNotification*) notification
{
    NSWindow* window = [self window];

    NSRect mainDisplayRect = [[NSScreen mainScreen] frame];
    [window setStyleMask:NSBorderlessWindowMask];
    [window setContentSize:mainDisplayRect.size];
    [window setLevel:NSMainMenuWindowLevel + 1];
    [window makeKeyAndOrderFront:self];

    NSRect windowFrame = [window frame];
    windowFrame.origin.x = 0;
    windowFrame.origin.y = 0;
    [window setFrame:windowFrame display:YES];
}

...フルスクリーン モードの開始/終了時の予想される動作が修正されました。

于 2013-09-15T10:02:18.437 に答える