Ios 在Swift中监听硬件键盘按键
我想在我的应用程序中添加硬件键盘支持,这样用户可以随时通过按键盘上的某个键来触发要调用的功能。我发现并能够使它在Objective-C中工作得很好。我已将其转换为Swift,但由于某种原因,Ios 在Swift中监听硬件键盘按键,ios,swift,keyboard,uikeycommand,Ios,Swift,Keyboard,Uikeycommand,我想在我的应用程序中添加硬件键盘支持,这样用户可以随时通过按键盘上的某个键来触发要调用的功能。我发现并能够使它在Objective-C中工作得很好。我已将其转换为Swift,但由于某种原因,keyPressed方法在我按下“C”后没有被调用。我确认只要用户按下键盘上的任何键,就会调用keyCommands。我正在用iOS模拟器和Mac的键盘进行测试 我的Swift代码有什么问题 override func canBecomeFirstResponder() -> Bool { re
keyPressed
方法在我按下“C”后没有被调用。我确认只要用户按下键盘上的任何键,就会调用keyCommands
。我正在用iOS模拟器和Mac的键盘进行测试
我的Swift代码有什么问题
override func canBecomeFirstResponder() -> Bool {
return true
}
func keyCommands() -> [AnyObject]? {
var keyCommands = []
struct Static {
static var onceToken : dispatch_once_t = 0
}
dispatch_once(&Static.onceToken) {
let command = UIKeyCommand(input: "c", modifierFlags: nil, action: "keyPressed:")
keyCommands = [command]
}
return keyCommands
}
func keyPressed(command: UIKeyCommand) {
println("user pressed c") //never gets called
}
问题是每次按下键时调用
keyCommands
,每次我初始化数组使其为空,然后返回它。因此,第一次调用该方法时,它将返回正确的数组,但第二次它将返回一个没有内容的数组
为了解决这个问题,我决定将key commands数组存储为属性,然后在方法中检查它是否为nil
,如果是,则创建它,否则只返回存储的属性