"启动应用程序持有[修饰键]"背后的诀窍是什么?

Eim*_*tas 16 macos cocoa

iTunes和Reeder(我相信很多其他的)应用程序能够在按住⌥(选项)键的同时修改启动行为.我试着看NSApplicationDelegate方法,但似乎没有任何暗示我正在寻找的东西.这个功能是如何实现的?

Fra*_*rew 23

在您的应用程序委托的applicationDidFinishLaunching:方法中

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

BOOL isOptionPressed = (flags == NSAlternateKeyMask);
Run Code Online (Sandbox Code Playgroud)

(编辑匹配令人敬畏的答案在Objective-C中声明和检查/比较(位掩码)枚举 以前这是 BOOL isOptionPressed = (0 != (flags & NSAlternateKeyMask)); 但是零检查不需要检查是否为相等的掩码,除非位掩码本身表示二进制中的全部零.提供的链接提供了更多细节.)