4

私のアプリには、ユーティリティ ウィンドウがあります (実際には NSPanel オブジェクトです)。いつか表示され、他のアプリケーションのウィンドウの前に表示されます。

ただし、他のアプリケーションがフルスクリーン モードで実行されている場合、ユーティリティ ウィンドウは表示されません。しかし、フルスクリーン アプリケーションを実行すると、新しいデスクトップが作成されることがわかりました。

(ここのデスクトップは、他の質問で人々が話しているスペースだと思います。)

Launchpad で「Mission Control」を確認すると、元のデスクトップにユーティリティ ウィンドウが表示されていましたが、ユーザーが現在見ている新しいデスクトップにはフルスクリーン アプリケーションが表示されていました。

ドキュメントを読んだところ、同様の質問がいくつか見つかりました。ウィンドウのコレクション動作を設定する必要があるようです。だから私はこれを試しました:

[self.window setCollectionBehavior:NSWindowCollectionBehaviorDefault | NSWindowCollectionBehaviorTransient | NSWindowCollectionBehaviorFullScreenAuxiliary];

うまくいきません。

フルスクリーン アプリケーションが作成した現在のデスクトップ/スペースにウィンドウを移動するにはどうすればよいですか?

4

1 に答える 1

1

以下は私のテストコードです。問題なく動作します。

NSPanel *test_panel = [[NSPanel alloc] initWithContentRect:NSMakeRect(300, 300, 500, 500) styleMask:NSTitledWindowMask|NSClosableWindowMask backing:NSBackingStoreBuffered defer:YES];
        [test_panel setReleasedWhenClosed:YES];
        [test_panel setHidesOnDeactivate:NO];
        [test_panel setFloatingPanel:YES];
        [test_panel setStyleMask:NSClosableWindowMask|NSTitledWindowMask | NSNonactivatingPanelMask];
        [test_panel setLevel:kCGMainMenuWindowLevel-1];
        [test_panel setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces|NSWindowCollectionBehaviorFullScreenAuxiliary];
        [test_panel setCanBeVisibleOnAllSpaces:YES];
        [test_panel center];
        [test_panel orderFront:nil];
于 2016-04-13T06:49:17.183 に答える