我在拦截键盘事件时遇到问题。我已将我的 iOS 与 SteelSeries Free(游戏手柄控制器)连接起来,当连接到 iOS 时,它将被检测为蓝牙键盘。这是在我打开 Notes 时进行的测试,在游戏手柄中按下任何按钮都会写一封信。
我需要拦截此按钮按下并运行我自己的功能,但不幸的是我无法这样做。
我一直在尝试使用 GCController 但显然它没有被检测为游戏控制器对象。当我打印计数时,它显示为 0。我的代码如下。
let gameControllers = GCController.controllers() as! [GCController]
println("configureConnectedGameControllers count: \(gameControllers.count)")
所以我认为这是因为游戏手柄被检测为蓝牙键盘,这就是为什么它没有被检测为游戏控制器。所以我尝试改用 UIKeyCommand 。下面是我的代码:
override func viewDidLoad() {
super.viewDidLoad()
var keys = [UIKeyCommand]()
for digit in "abcdefghijklmnopqrstuvwxyz"
{
keys.append(UIKeyCommand(input: String(digit), modifierFlags: .Command, action: Selector("keyPressed:")))
keys.append(UIKeyCommand(input: String(digit), modifierFlags: .Control, action: Selector("keyPressed:")))
keys.append(UIKeyCommand(input: String(digit), modifierFlags: nil, action: "pressKey"))
}
}
override func canBecomeFirstResponder() -> Bool {
return true
}
func keyPressed(command: UIKeyCommand) {
println("another key is pressed") //never gets called
}
func pressKey() {
println("a key is pressed")
}
但即使使用上述实现,当我按下游戏手柄上的按钮时,控制台中也不会打印任何内容。
这让我很困惑。因此,如果您对此有任何答案,请帮助我。提前致谢!