Как я могу протестировать keyEvents в Xcode Playground? - PullRequest
1 голос
/ 10 июня 2019

Я хочу реализовать некоторые действия клавиатуры в моем собственном представлении.Фактический код более сложный, но даже в этой простой настройке я не могу заставить его работать.

Код ниже - Swift 4 в Xcode 9.2 Playground.Если вы включите интерактивный просмотр, то должен быть нарисован прямоугольник размером 500x500 пикселей.

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, нодо сих пор не знаю, почему мой код не работает.

...