4

Mac OS Xでは、画面全体だけでなく、メニューバーとドックにもウィンドウを配置するために、どのAPIを呼び出す必要がありますか?また、画面をこの位置に効果的に「ロック」して、ミッションコントロール、ランチパッドなどを無効にすることは可能ですか?

AppDelegateの実装ファイル内で次のコードを試しました。

- (void)awakeFromNib {
    @try {
        NSApplicationPresentationOptions options = NSApplicationPresentationDisableForceQuit + NSApplicationPresentationDisableHideApplication + NSApplicationPresentationDisableProcessSwitching + NSApplicationPresentationHideDock + NSApplicationPresentationHideMenuBar + NSApplicationPresentationFullScreen;
        [NSApp setPresentationOptions:options];
        NSLog(@"Set presentation options"); 

    }
    @catch (NSException *exception) {
        NSLog(@"Error. Invalid options");
    }

}

NSLogは「プレゼンテーションオプションの設定」を読み取りますが、他には何も起こりません。任意のヒント?

4

3 に答える 3

5

これは基本的に「キオスクモード」と同じようなものです。Appleのキオスクモードプログラミングトピックを参照してください。

基本的に、-[NSApplication setPresentationOptions:]またはメソッドが取るのと同じ種類のプレゼンテーションオプション値を含む値を持つ-[NSView enterFullScreenMode:withOptions:]キーを含むオプションディクショナリを使用します。NSFullScreenModeApplicationPresentationOptionsNSNumberNSApplication

于 2012-05-19T11:30:51.600 に答える
3

Xcodeで、新しいCocoaアプリケーションを作成し、以下のコードをに貼り付けますAppDelegate.m

- (void)awakeFromNib
{
    // Lock app in full screen mode for 10 seconds.
    NSApplicationPresentationOptions presentationOptions = (NSApplicationPresentationHideDock |
                                                            NSApplicationPresentationHideMenuBar |
                                                            NSApplicationPresentationDisableAppleMenu |
                                                            NSApplicationPresentationDisableProcessSwitching |
                                                            NSApplicationPresentationDisableForceQuit |
                                                            NSApplicationPresentationDisableSessionTermination |
                                                            NSApplicationPresentationDisableHideApplication);
    NSDictionary *fullScreenOptions = @{NSFullScreenModeApplicationPresentationOptions: @(presentationOptions)};
    [_window.contentView enterFullScreenMode:[NSScreen mainScreen] withOptions:fullScreenOptions];
    [_window.contentView performSelector:@selector(exitFullScreenModeWithOptions:) withObject:nil afterDelay:10.0];
}

でアプリを終了することはでき⌘Qます。これを防ぐには、[終了]メニュー項目に相当するキーを削除します。

Xcode Interface Builder:メニュー項目

または、サブクラス化NSApplicationしてオーバーライド-sendEvent:して何もしないことで、アプリケーションに送信されるすべてのイベント(キーボード、マウスなど)を無視することができます。

于 2013-03-03T14:31:54.180 に答える
2

オプションは、ビットごとのORを使用して一緒に|されます。

NSApplicationPresentationOptions options = NSApplicationPresentationDisableForceQuit | NSApplicationPresentationDisableHideApplication | NSApplicationPresentationDisableProcessSwitching | NSApplicationPresentationHideDock | NSApplicationPresentationHideMenuBar | NSApplicationPresentationFullScreen; [NSApp setPresentationOptions:options];

于 2012-05-30T04:45:39.057 に答える