我正在编写一个 Mac(10.6 / 10.7)应用程序,该应用程序在允许用户访问计算机之前对 Active Directory 域对用户进行身份验证(我被告知不能允许用户通过传统登录服务登录) )。我已准备好身份验证代码,现在正在尝试使此登录窗口全屏显示并且无法关闭。
Apple 的 Kiosk 模式 API (文档在这里 http://developer.apple.com/library/mac/#technotes/KioskMode/Introduction/Introduction.html)似乎非常适合这个,我用它来使窗口全屏显示,禁用停靠栏/菜单栏/强制退出等,所有这些都工作正常。我遇到的问题是,我似乎无法阻止用户简单地通过 CMD+Q 退出应用程序。
当用户可以退出时,在具有限制的信息亭模式应用程序中没有任何意义,所以我假设我错过了一些东西。下面是我正在做的事情的一个例子:
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。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)