我在Swift项目中的Objective库中有以下功能:
- (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?有办法纠正这个错误吗?
提前谢谢。
发布于 2015-04-02 08:39:22
您可以简单地使用UInt16从任何整数n创建UInt16(n)。就你而言:
hotKeyCenter.registerHotKeyWithKeyCode(
UInt16(kVK_ANSI_V),
modifierFlags: NSEventModifierFlags.ControlKeyMask.rawValue,
task: { _ -> Void in
})https://stackoverflow.com/questions/29408246
复制相似问题