Ich versuche, ein einfaches Programm in Swift 3 zu schreiben, wo ich jedes Mal eine Aktion ausführen muss, wenn der Benutzer eine Pfeiltaste drückt. Nach ein wenig Recherche fand ich, dass die Methode, die ich verwenden musste, keyDown(with event: NSEvent)
war; Das Problem ist, dass es nicht aufgerufen wird, wenn ich irgendeine Taste drücke.Swift 3 (macOS): keyDown (mit Ereignis: NSEvent) wird nicht aufgerufen
Hier ist mein Code
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")
}
}
Ich habe versucht, alle mit den Pfeiltasten und andere Taste zu testen, ob meine Pfeiltasten ein Problem hatte, aber es ist nichts passiert - außer mir den Fehler Ton von macOS bekommen.
Ich weiß nicht, woher das Problem kommen könnte - ich bin Swift ziemlich neu, also kann es etwas ganz Offensichtliches sein, das ich nicht sehe. Weißt du, was ich falsch mache?
Vielen Dank im Voraus
Ihre Klasse muss Teil der Responder-Kette sein. Sie werden wahrscheinlich finden, was Sie in [Cocoa Event Handling Guide] (https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/EventOverview/Introduction/Introduction.html) benötigen. – Jerry