2015-05-12 2 views
4

В приложении, которое я разрабатываю, база данных используется для хранения всех пользовательских данных, обычно расположенных где-то в библиотеке/поддержке приложений. Чтобы пользователь мог переключать базу данных, я хочу реализовать функциональность, похожую на iTunes или iPhoto, где приложение запрашивает местоположение библиотеки или базы данных, если нажать клавишу выбора при запуске приложения.Как определить нажатые клавиши-модификаторы при запуске приложения Cocoa?

Как проверить текущие нажатые (модификаторы) ключи, если нет NSEvent?

Я уже пробовал:

[NSResponder flagsChanged:(NSEvent *)theEvent] - Наверное, не вызывается, поскольку ключ вариант уже вниз перед окном и все ответчики инстанцируются.

[[NSApplication sharedApplication] currentEvent] - возвращается nil.

ответ

7

Поместите это в applicationDidFinishLaunching:

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

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

Начиная с MacOS 10.12, это должно быть:

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

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