Ich versuche, eine Anwendung für OS X mit Swift und Cocoa zu erstellen. Ich möchte, dass die Anwendung auf wichtige Ereignisse reagiert, ohne dass der Fokus auf/in einem Textfeld liegt. Ich habe ein neues Cocoa-Projekt mit Storyboards in Xcode und habe die ViewController.swift Klasse auf den folgende Änderung:Swift NSViewController reagiert auf mouseDown-Ereignis, aber nicht keyDown-Ereignis
import Cocoa
class ViewController: NSViewController {
override func mouseDown(theEvent: NSEvent) {
println("Mouse Clicked")
}
override func keyDown(theEvent: NSEvent) {
println("Key Pressed")
}
override func viewDidLoad() {
super.viewDidLoad()
}
override var representedObject: AnyObject? {
didSet {
}
}
}
Wenn ich das Programm laufen, ich Konsolenausgabe, wenn ich auf dem Fenster klicken, aber ich don Ich bekomme keine Konsolenausgabe, wenn ich irgendeine Taste drücke.
Also meine Fragen sind: Warum auf Mausereignisse aber nicht wichtige Ereignisse nicht mein Programm reagiert? Welche zusätzlichen Schritte muss ich ausführen, damit wichtige Ereignisse wie die Mausereignisse funktionieren?
Es scheint, dass mein View-Controller in der Responder-Kette ist, da er die Mausereignisse abfängt, so dass das nicht das Problem zu sein scheint. Ich habe andere Antworten hier auf SE gefunden, die sagen, dass ich die Klasse NSView oder NSWindow ableiten muss. Ist es möglich, wichtige Ereignisse zu bekommen, ohne das zu tun?
Vielen Dank im Voraus.
EDIT: Neben der Antwort akzeptiert, ist Swift - Capture keydown from NSViewController eine große, klare Lösung.
Könnten Sie bitte Ihren Code für die Unterklassenbildung von NSView angeben? Ich muss dasselbe tun, was ich glaube. Ich versuche, Pfeiltasten zu drücken, wenn Sie gedrückt werden. – justColbs
Die beste Antwort auf diese Frage ist hier: http://stackoverflow.com/questions/32446978/swift-capture-keydown-from-nsviewcontroller/32447474 Ich poste dies, weil keines der gegebenen Beispiele mir wirklich geholfen hat und ich bekam eine wirklich einfache Antwort in der Post über das funktionierte, sogar in Xcode 8 und Swift 3. – jvarela
@jvarela Das ist ein guter Link. Vielen Dank. Ich werde meine Frage aktualisieren, um darauf zu verlinken. – Bernem