получить modifierFlags в событии keyDown, не нажимая клавишу немодификатора вместе с ним! - PullRequest
5 голосов
/ 05 ноября 2010

Я получил подкласс NSWindow в приложении NSDocument для получения событий keyDown.

Я использовал следующий код в своем подклассе ...

- (void)keyDown:(NSEvent *)theEvent {

    NSLog(@"keyDown!");

    if ([theEvent modifierFlags] & NSAlternateKeyMask) {
        NSLog(@"Alt key Down!");
    }
    else
        [super keyDown:theEvent];
}

Я получаю ключсобытия, когда нажаты немодифицирующие клавиши!Я также получаю «Alt Key is Down», когда я, например, нажимаю alt + z (alt + немодификатор).

Проблема здесь в том, что я хочу обработать событие, когда только alt / optionклавиша нажата одна, без комбинации с другими клавишами и -keyDown: не вызывается!Чего мне не хватает?

Спасибо ...

Ответы [ 2 ]

7 голосов
/ 05 ноября 2010

Вы можете поймать только клавишу Alt / Option в -flagsChanged: вместо -keyDown:.

-(void)flagsChanged:(NSEvent*)theEvent {
    if ([theEvent modifierFlags] & NSAlternateKeyMask) {
        NSLog(@"Alt key Down (again)!");
    }
}
0 голосов
/ 01 марта 2016

Вы можете сделать так:

-(void)flagsChanged:(NSEvent*)theEvent {
    [super flagsChanged:theEvent];
    if ((([theEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask) & NSAlternateKeyMask) > 0) {
        NSLog(@"Alt key Down (again)!");
    }
}
...