4

我正在编写一个 Mac (10.6 / 10.7) 应用程序,该应用程序在允许用户访问计算机之前针对 Active Directory 域对用户进行身份验证(我被告知我不能允许用户通过传统登录服务登录)。我有验证码,现在正试图让这个登录窗口全屏并且无法关闭。

Apple 的 Kiosk Mode API(此处的文档)似乎非常适合此操作,我已经使用它来全屏显示窗口、禁用停靠/菜单栏/强制退出等,所有这些都可以正常工作。我遇到的问题是我似乎无法阻止用户简单地使用 CMD+Q 退出应用程序。

当用户可以退出它时,具有限制的信息亭模式应用程序没有意义,所以我假设我错过了一些东西。下面是我正在做的一个例子:

NSApplicationPresentationOptions options = 
NSApplicationPresentationHideMenuBar|NSApplicationPresentationHideDock|
NSApplicationPresentationDisableHideApplication|
NSApplicationPresentationDisableProcessSwitching|
NSApplicationPresentationDisableAppleMenu| NSApplicationPresentationDisableForceQuit;

[NSApp setPresentationOptions:options];
[[_window contentView] enterFullScreenMode:[NSScreen mainScreen] withOptions:nil];

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

4

1 回答 1

4

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

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

- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender

当您的应用处于 Kiosk 模式时,然后在此处返回 NSTerminateCancel。

于 2014-02-14T20:48:32.057 回答