我在Swift项目的Objective-C库中有以下函数:
- (DDHotKey *)registerHotKeyWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags task:(DDHotKeyTask)task {
// ...
}
我试图通过以下代码从Swift调用此函数:
hotKeyCenter.registerHotKeyWithKeyCode(
kVK_ANSI_V,
modifierFlags: NSEventModifierFlags.ControlKeyMask.rawValue,
task: { _ in
// ...
}
)
不幸的是,它给了我以下错误:
缺少参数' action'的参数。在电话中
但是,如果我将kVK_ANSI_V
更改为任何这样的数字
hotKeyCenter.registerHotKeyWithKeyCode(
34,
modifierFlags: NSEventModifierFlags.ControlKeyMask.rawValue,
task: { _ in
// ...
}
)
代码编译没有任何错误。
如您所知,碳框架中定义的kVK_ANSI_V
:
var kVK_ANSI_V: Int { get }
如您所见,它具有Int
类型,而方法的keyCode
参数具有unsigned short
类型。
如何将Int
投射到unsigned short
?有没有办法解决这个错误?
提前致谢。
答案 0 :(得分:1)
您可以简单地从任何整数UInt16
创建n
与UInt16(n)
。在你的情况下:
hotKeyCenter.registerHotKeyWithKeyCode(
UInt16(kVK_ANSI_V),
modifierFlags: NSEventModifierFlags.ControlKeyMask.rawValue,
task: { _ -> Void in
})