Pregunta

Voy a resumir esto en breve: Un "First Responder" en un archivo semilla es un objeto, que representa el elemento de control de interfaz de usuario que tiene el foco del usuario. Por lo que si el usuario hace clic en un control, los conjuntos de plumillas que hace clic de control de interfaz de usuario como primera respuesta. En mi aplicación podría hacer una salida a la "primera respuesta" de la punta, por lo que podría, por ejemplo, enviar un mensaje de "hacer que la fuente de color rojo" a lo que el usuario ha activado haciendo clic.

Y entonces, si este control de primera respuesta de interfaz de usuario no entiende ese mensaje, el mensaje se transmite en la cadena de respuesta, hasta que un elemento padre o abuelo (y así sucesivamente) elemento de control de la interfaz de usuario entienda el mensaje. De lo contrario, se tendrá en cuenta.

Así primera respuesta siempre establece un "enlace" para el control de la interfaz de usuario que tiene el foco. ¿Es eso correcto?

¿Fue útil?

Solución

En este cuadro general, los detalles de implementación erróneas en el primer párrafo.

  

A "First Responder" en un NibFile es un objeto ...

No, en realidad, de primera respuesta es nil. Conexión de un control de interfaz de usuario (por ejemplo, botón) para primer respondedor en una punta es equivalente a [control setTarget:nil] en el código.

La razón de la falsa a objetos de primera respuesta en la ventana de la semilla es que, en el IB, se establece una acción de destino y, al mismo tiempo (Ctrl-arrastrar para apuntar, seleccionar la acción de menú emergente). No se puede establecer la acción y dejar al objetivo definido, como se hace en el código, por lo que ponerlo en nil, es necesario hacerlo de forma explícita. Eso es lo que es de primera respuesta para:. Que es un objeto que representa falsa nil, para que pueda establecer el objetivo y la acción de la misma manera que lo haría al establecer que a un verdadero objetivo específico

Por supuesto, no se puede utilizar esta función para establecer cualquier otra cosa a nil, sólo los objetivos vistas. Sólo se puede utilizar para significar primera respuesta, no otra cosa.

  

Así que si los clicks del usuario en un control de interfaz de usuario, la punta fija ...

La punta no hace nada. Es sólo una colección liofilizado de objetos almacenados en el disco. Incluso cuando se instancia NSNib, todo lo que está haciendo está descongelando algunos objetos. Son los objetos que hacen cosas.

En el caso que nos ocupa, al desarchivar el control conectado a la primera respuesta de la punta, su objetivo se establece en nil (recuerde, eso es lo que realmente es de primera respuesta: un objetivo de nil). Cuando el objetivo del control es un nil, y el usuario hace clic en él, envía su acción a lo que responde es el primer nivel de respuesta en el momento.

Sus párrafos segundo y tercero son correctos.

Otros consejos

Su comprensión es incompleta. El respondedor cadena incluye más de lo que normalmente se le ocurriría como "controles de interfaz de usuario", incluyendo lo más importante del documento actual. Una de las grandes ventajas es que le permite interactuar con el conceptual "actual" lo que sea - ventana actual, el campo de texto actual, documento actual, etc -. Sin un montón de jugar un poco para encontrarlo

Una respuesta es cualquier objeto que llevará a cabo las acciones (funciones de llamada) cuando se producen eventos (como hacer clic en los botones). La cadena de respuesta es una secuencia de objetos cada una contenía una en la otra - por ejemplo un botón dentro de un panel interior de una ventana. Cuando se produce un evento, iteramos través de la cadena hasta que encontremos un objeto que no tiene un conjunto de respuesta a nil y, por tanto, que puede responder al evento. Así que en lugar de proporcionar un objeto de respuesta para cada botón en una ventana, podemos proporcionar una única respuesta para toda la ventana. El primer nivel de respuesta es simplemente el primer objeto dentro de la cadena de respuesta -. Vincular un evento para el primer nivel de respuesta permite que el evento para dejar pasar la cadena

Compruebe hacia fuera este enlace que hace un buen trabajo explicando. Creo que tiene la esencia de la misma:

http://cocoadev.com/FirstResponder

A partir de la fuente:

  

El FirstResponder es el primer objeto   en la cadena de respuesta que se da   la oportunidad de responder a un evento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top