Swift 3(macOS):keyDown(带事件:NSEvent)不会被调用

时间:2016-12-25 12:19:36

标签: swift xcode macos swift3

我正在尝试在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很新,所以这可能是我看不到的非常明显的事情。你们知道我做错了吗?

非常感谢提前

1 个答案:

答案 0 :(得分:2)

我注意到您已在视图控制器的代码中实现了keyDown方法。这实际上是错误的地方 - 该方法应该放在视图的代码中,而不是视图控制器。如果您当前没有使用自定义视图(可以修改代码),那么您应该创建一个新的子类。