【问题标题】:get modifierFlags in keyDown event without pressing non-modifier key along with it!在 keyDown 事件中获取 modifierFlags 而无需同时按下非修饰键!
【发布时间】:2011-05-05 08:08:40
【问题描述】:

我在 NSDocument 应用程序中对 NSWindow 进行了子类化,以便接收 keyDown 事件。

我在我的子类中使用了以下代码...

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

    NSLog(@"keyDown!");

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

当按下非修饰键时,我会收到键事件! 例如,当我按下 alt+z(alt+non-modifierkey)时,我也会收到“Alt Key is Down”。

这里的问题是我想在单独按下 alt/option 键时处理事件,而不与其他键和 -keyDown: 组合使用!我错过了什么?

谢谢...

【问题讨论】:

    标签: objective-c events handle keydown modifier


    【解决方案1】:

    您可以单独使用 Alt/Option 键 in -flagsChanged: 而不是 -keyDown:

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

    【讨论】:

    • 不需要转发 theEven 给 super 吗?应该不会吧?
    【解决方案2】:

    你可以这样做:

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

    【讨论】:

      猜你喜欢
      • 2010-10-15
      • 2013-02-02
      • 2018-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多