Objective-C:按下另一个键时检测“shift”按键

时间:2012-01-30 17:57:30

标签: objective-c cocos2d-iphone shift nsevent nsresponder

这是为了实现基于键盘的游戏控制器。 左/右箭头使角色行走。 shift + left / right使角色运行。

这是我到目前为止使用的代码:

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

    if ([event modifierFlags] & NSShiftKeyMask) {
        NSLog(@"Shift key pressed");
    }
    // logic follows
}

如果在按箭头键之前按下shift,则此方法正常。 但是如果按下箭头键并且你需要加速,按下shift不会导致任何事情发生......

所以,我看到了这样的答案: https://stackoverflow.com/a/420691/987818

但我不明白这个NSR应答器的使用位置。有关信息,我使用Cocos2D(objc游戏引擎)。

感谢任何线索:-) 学家

1 个答案:

答案 0 :(得分:3)

您需要在实现此-keyDown: method的同一个类中实现flagsChanged:,或者只需要能够捕获此事件的任何NSResponder子类(例如NSApplication)。