2012-04-05 12 views
14

He hecho un NSView personalizado y he implementado el método keyDown:. Sin embargo, cuando presiono las teclas nunca se llama al método. ¿Debo registrarme para recibir esos eventos? fyi, estoy haciendo una aplicación basada en documentos y puedo manejar este código en cualquier lugar (no tiene que estar en esta vista). ¿Cuál es el mejor lugar para hacer esto en una aplicación basada en documentos, de modo que el evento ocurra en toda la aplicación?Cacao: evento clave en NSView no encendido

Respuesta

27

Debe sobrescribir -acceptsFirstResponder para devolver YES.

+0

que tienen el mismo problema que el autor de la pregunta (a medida NSView en una aplicación basada en documentos), y acceptsFirstResponder simplemente overrided pero keyDown todavía no se activa. Si tienes algún otro consejo sobre lo que podría ser, ¡estaría eternamente agradecido! – chm

+1

¿Tiene motivos para creer que su vista es la primera respuesta de la ventana? Puede establecer el 'initialFirstResponder' en el código antes de ordenar la ventana en pantalla o conectarla en IB. En otras ocasiones, puede usar '-makeFirstResponder:'. Además, asegúrese de que su ventana se pueda convertir en la clave. –

7

En Swift:

class MDView: NSView { 
    override var acceptsFirstResponder: Bool { return true } 
} 
Cuestiones relacionadas