我正在尝试在Swift 3中编写一个简单的程序,我需要在每次用户按箭头键时执行操作。经过一番研究后,我发现我需要使用的方法是keyDown(with event: NSEvent)
;问题是,每当我按任意键时,它都不会被调用。
这是我的代码
import Cocoa
let LEFT: UInt16 = 123
let RIGHT: UInt16 = 124
let DOWN: UInt16 = 125
let UP: UInt16 = 126
class GameViewController: NSViewController {
...
override func keyDown(with event: NSEvent) {
print("abc")
switch event.keyCode {
case LEFT:
print("left")
break
case RIGHT:
print("right")
break
case DOWN:
print("down")
break
case UP:
print("up")
break
default:
print("other")
super.keyDown(with: event)
break
}
print("Key with number: \(event.keyCode) was pressed")
}
}
我尝试按下所有箭头键和其他键来测试我的箭头键是否有问题,但没有任何反应 - 除了我从macOS收到错误声音。
我不知道问题出在哪里 - 我对Swift很新,所以这可能是我看不到的非常明显的事情。你们知道我做错了吗?
非常感谢提前
答案 0 :(得分:2)
我注意到您已在视图控制器的代码中实现了keyDown
方法。这实际上是错误的地方 - 该方法应该放在视图的代码中,而不是视图控制器。如果您当前没有使用自定义视图(可以修改代码),那么您应该创建一个新的子类。