如何在Xcode Playground中测试keyEvent?

时间:2019-06-10 20:36:13

标签: swift xcode swift-playground keyevent

我想在自定义视图中实现一些键盘操作。实际的代码更加复杂,即使在这种简单设置下,我仍然无法正常工作。

下面的代码是Xcode 9.2 Playground中的Swift 4。如果打开实时视图,应绘制一个500x500px的矩形。

class MyView: NSView {

    override open func draw(_ rect: CGRect) {
        let context = NSGraphicsContext.current!.cgContext
        context.stroke(rect)
    }

    override open func keyDown(with event: NSEvent) {
        print("Key pressed, Code: \(event.keyCode)")
    }
    /*
    override open func performKeyEquivalent(with event: NSEvent) -> Bool {
        print("Key pressed, Code: \(event.keyCode)")
        return true
    }
    */
    override open func mouseUp(with event: NSEvent) {
    print("Mouse clicked.")
    }
}

let myView = MyView(frame: CGRect(origin: .zero, size: CGSize(width: 500, height: 500)))

PlaygroundPage.current.liveView = myView

虽然检测到鼠标在矩形中单击,但未检测到keyDown。但是,当您取消注释performKeyEquivalent函数时,此方法将起作用。

我整天都在研究上,阅读了有关处理关键事件和响应者链的苹果文档,并阅读了几篇关于SO的文章,但仍然不知道为什么我的代码无法正常工作。

0 个答案:

没有答案