- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我继承了 NSTextView 并重写了 keyDown。我想检测命令键组合。例如,Command-L。
Apple's documentation表示您只是使用 NSEventModifierFlags.CommandKeyMask 和修饰符标志(在传递的 NSEvent 中)。
当我这样做时:
let ck = NSEventModifierFlags.CommandKeyMask
我收到一个奇怪的错误:
Binary operator '&' cannot be applied to two 'NSEventModifierFlags' operands.
这是怎么回事?这是 swift 2.0,xcode 7。
谢谢!
最佳答案
Apple's documentation indicates that you simply and the modifier flags
文档仍然指的是 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")
}
要检查单个键,请使用 intersect
过滤掉任何不需要的标志,然后使用 ==
检查单个标志:
let modifierkeys = theEvent.modifierFlags.intersect(.DeviceIndependentModifierFlagsMask)
if modifierkeys == .CommandKeyMask {
NSLog("Only command key down")
}
关于macos - 检查 keyDown event.modifierFlags 产生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33158513/
我继承了 NSTextView 并重写了 keyDown。我想检测命令键组合。例如,Command-L。 Apple's documentation表示您只是使用 NSEventModifierFla
我在 NSDocument 应用程序中对 NSWindow 进行了子类化,以便接收 keyDown 事件。 我在我的子类中使用了以下代码... - (void)keyDown:(NSEvent *)t
我刚刚在 NSEvent 中试验了 addLocalMonitorForEventsMatchingMask:handler: 方法并遇到了以下问题:How do I find out if only
我是一名优秀的程序员,十分优秀!