Ich habe eine benutzerdefinierte NSView gemacht und die keyDown:
-Methode implementiert. Wenn ich jedoch Tasten drücke, wird die Methode nie aufgerufen. Muss ich mich registrieren, um diese Veranstaltungen zu erhalten? fyi, ich mache eine dokumentbasierte Anwendung und kann diesen Code überall handhaben (muss nicht in dieser Ansicht sein). Was ist der beste Ort, um dies in einer dokumentenbasierten Anwendung so zu tun, dass das Ereignis in der gesamten Anwendung auftritt?Cocoa: Key-Down-Ereignis auf NSView nicht feuern
14
A
Antwort
27
Sie müssen -acceptsFirstResponder
überschreiben, um YES
zurückzugeben.
7
In Swift:
class MDView: NSView {
override var acceptsFirstResponder: Bool { return true }
}
Ich habe das gleiche Problem wie die Fragesteller (custom NSView in einem Dokument-basierte Anwendung), und nur overrided acceptsFirstResponder aber keyDown ist noch nicht ausgelöst. Wenn Sie andere Ratschläge haben, was es sein könnte, wäre ich Ihnen ewig dankbar! – chm
Haben Sie Grund zu der Annahme, dass Ihre Ansicht der erste Responder des Fensters ist? Sie können den 'initialFirstResponder' im Code festlegen, bevor das Fenster auf dem Bildschirm bestellt wird, oder es in IB verbinden. Zu anderen Zeiten können Sie '-makeFirstResponder:' verwenden. Stellen Sie außerdem sicher, dass Ihr Fenster Schlüssel wird. –