我继承了NSTextView并重写了keyDown.我想检测命令键组合.例如,Command-L.
Apple的文档表明你只是和修饰符标志(在传递的NSEvent中)与NSEventModifierFlags.CommandKeyMask.
当我这样做时:
let ck = NSEventModifierFlags.CommandKeyMask
Run Code Online (Sandbox Code Playgroud)
我收到一个奇怪的错误:
Binary operator '&' cannot be applied to two 'NSEventModifierFlags' operands.
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?这是swift 2.0,xcode 7.
谢谢!
Dar*_*ren 12
Apple的文档表明你只是和修饰符标志
文档仍然指C和Objective-C.Swift使用OptionSetType,它不使用按位运算符来检查标志.
相反,使用该contains()方法检查一个或多个标志:
if theEvent.modifierFlags.contains(.CommandKeyMask) {
NSLog("command key down")
}
if theEvent.modifierFlags.contains(.AlternateKeyMask) {
NSLog("option key down")
}
if theEvent.modifierFlags.contains([.CommandKeyMask, .AlternateKeyMask]) {
NSLog("command and option keys down")
}
Run Code Online (Sandbox Code Playgroud)
要检查单个密钥,请使用intersect过滤掉任何不需要的标记,然后使用==检查单个标记:
let modifierkeys = theEvent.modifierFlags.intersect(.DeviceIndependentModifierFlagsMask)
if modifierkeys == .CommandKeyMask {
NSLog("Only command key down")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1160 次 |
| 最近记录: |