【发布时间】:2017-05-10 07:36:39
【问题描述】:
我正在尝试在 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 还很陌生,所以这可能是我没有看到的很明显的东西。你们知道我做错了什么吗?
在此先感谢
【问题讨论】:
-
你的类必须是响应者链的一部分。你可能会在Cocoa Event Handling Guide找到你需要的东西。