lab*_*b12 3 cocoa objective-c nsevent
我想知道NSEvent是否响应键盘上的"Shift"键.我正在调试我的应用程序时记录keyCodes,并且我没有获得shift键的keyCode值.
谢谢,
凯文
编辑:这是我从用户响应中使用的代码.
-(void)keyDown:(NSEvent*)event
{
if ([event modifierFlags] == NSShiftKeyMask) {
NSLog(@"Shift key pressed");
}
}
Run Code Online (Sandbox Code Playgroud)
Shift键仍未被识别...
Ric*_*ard 15
看一下flagsChanged:方法吧NSResponder.
像这样的东西:
- (void) flagsChanged:(NSEvent *) event {
if ([event modifierFlags] & NSShiftKeyMask) {
//Do something
}
}
Run Code Online (Sandbox Code Playgroud)
您的代码示例无法正常工作,因为它-modifierFlags是一个位掩码,因此测试掩码是否相等NSShiftKeyMask将无法正常工作.您需要使用按位运算AND符来测试是否设置了标志:
if ([event modifierFlags] & NSShiftKeyMask) {
NSLog(@"Shift key pressed");
}
Run Code Online (Sandbox Code Playgroud)
另外,如果您想将此结果存储在a中BOOL,则需要检查它是否不等于0,例如:
BOOL shiftKeyPressed = ([event modifierFlags] & NSShiftKeyMask) != 0;
Run Code Online (Sandbox Code Playgroud)
如果你把它留下来,那么BOOL将评估为NO(除非你从位掩码中拉出的值是1,这被定义为YES;因为-modifierFlags这不会在掩码开始时发生1 << 16).
| 归档时间: |
|
| 查看次数: |
5702 次 |
| 最近记录: |