在我正在开发的应用程序中,数据库用于存储所有用户数据,通常位于“库/应用程序支持”中的某个位置。为了使用户能够切换数据库,我想实现类似于iTunes或iPhoto的功能,其中,如果在启动应用程序时按下选项键,则该应用程序会要求提供图书馆或数据库的位置。

如果没有NSEvent,如何检查当前按下的(修饰符)键?

我已经尝试过:

[NSResponder flagsChanged:(NSEvent *)theEvent] –可能未调用,因为在窗口和实例化任何响应者之前,选项键已经按下。

[[NSApplication sharedApplication] currentEvent] –返回nil

最佳答案

把它放在applicationDidFinishLaunching中:

NSUInteger modifiers = ([NSEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask);

if (modifiers == NSAlternateKeyMask)   {
    // do your stuff here
}

从macOS 10.12开始,这应该是:
NSUInteger modifiers = ([NSEvent modifierFlags] & NSEventModifierFlagDeviceIndependentFlagsMask);

if (modifiers == NSEventModifierFlagOption)   {
    // do your stuff here
}

10-07 15:16