Mac Kiosk模式API-防止用户退出



我正在编写一个Mac(10.6/10.7)应用程序,在允许用户访问计算机之前,该应用程序会根据Active Directory域对用户进行身份验证(我被告知不能允许用户通过传统登录服务登录)。我已经准备好了身份验证码,现在正试图使此登录窗口全屏显示,但无法关闭。

苹果的Kiosk Mode API(这里的文档)似乎非常适合这一点,我用它来实现窗口全屏、禁用停靠/菜单栏/强制退出等,所有这些都很好。我遇到的问题是,我似乎无法阻止用户简单地CMD+Q退出应用程序。

在一个有限制的kiosk模式应用程序中,当用户可以退出它时,这是没有意义的,所以我认为我错过了一些东西。下面是我正在做的一个例子:

NSApplicationPresentationOptions options = 
NSApplicationPresentationHideMenuBar|NSApplicationPresentationHideDock|
NSApplicationPresentationDisableHideApplication|
NSApplicationPresentationDisableProcessSwitching|
NSApplicationPresentationDisableAppleMenu| NSApplicationPresentationDisableForceQuit;
[NSApp setPresentationOptions:options];
[[_window contentView] enterFullScreenMode:[NSScreen mainScreen] withOptions:nil];

结果:全屏窗口,没有菜单栏,没有停靠,不能强制退出,不能CMD+Tab离开屏幕。CMD+Q仍然退出应用程序。

我猜他找到了和我相同的解决方案,但由于这里没有实际答案,我想我会详细说明。

您需要做的是实现以下NSApplicationDelegate方法:

- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender

当您的应用程序处于Kiosk模式时,请在此处返回NSTerminateCancel。

最新更新