【问题标题】:Swift 3 (macOS) : keyDown(with event: NSEvent) doesn't get calledSwift 3 (macOS):keyDown(with event: NSEvent) 没有被调用
【发布时间】: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 还很陌生,所以这可能是我没有看到的很明显的东西。你们知道我做错了什么吗?

在此先感谢

【问题讨论】:

标签: swift xcode macos swift3


【解决方案1】:

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

【讨论】:

  • @Luigi 您需要任何帮助来设置它吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-30
  • 2015-01-31
  • 1970-01-01
  • 2015-03-07
相关资源
最近更新 更多