我正在尝试用 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 的新手,所以它可能是我没有看到的非常明显的东西。你们知道我做错了什么吗?
提前致谢
最佳答案
我注意到您已经在 View Controller 的代码中实现了 keyDown
方法。这实际上是不正确的地方——该方法应该放在 View 的代码中,而不是 View Controller 。如果您当前没有使用自定义 View (您可以修改代码),那么您应该创建一个新的子类。
关于 swift 3 (macOS) : keyDown(with event: NSEvent) doesn't get called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41321057/