2011-09-07 15 views
8

estoy confundido acerca de severals primeros puntos de respuesta:lógica del sistema de entendimiento para la primera respuesta

  1. Si llamo - becomeFirstResponder, hace la llamada al sistema – canBecomeFirstResponder primero? ¿Por qué?
  2. ¿Por qué hay tanto - becomeFirstResponder como – canBecomeFirstResponder? ¿En qué situaciones pueden devolver diferentes valores?
  3. ¿La aplicación tiene que tener el primer respondedor en todo momento? Si es así, ¿qué ocurre cuando llamo al – resignFirstResponder en algún objeto? ¿El UIApplication se convierte en el primer respondedor inmediatamente o se lanza este "token" en algún punto de la cadena de respuesta? ¿Puedo llamar al - becomeFirstResponder en el objeto UIApplication cuando quiero deshacerme de esa ficha de peregrino?
  4. ...

Por favor, que alguien me explique, cómo el sistema maneja su primera respuesta. Lo que está sucediendo bajo el capó cuando algún objeto se convierte en el primer respondedor, lo que sucede cuando el primero responde. Qué llamadas hace el sistema ... ¡Gracias!

Respuesta

6
  1. La implementación predeterminada de becomeFirstResponder no llamar canBecomeFirstResponder. Esto se debe a que un respondedor que devuelve NO desde canBecomeFirstResponder no debe convertirse en el primer respondedor.
  2. becomeFirstResponder hará que el receptor sea el primero en responder si tiene éxito. canBecomeFirstResponder solo comprueba si el receptor está dispuesto a ser el primero en responder, sin cambiar realmente nada. Es posible que becomeFirstResponder falle si el primer socorrista actual se niega a renunciar. Puede haber otras situaciones en las que también podría fallar becomeFirstResponder.
  3. No tiene que haber nada en su código que tenga el estado de primera respuesta. A juzgar por el método privado UIResponder firstResponder, el sistema no asigna ningún valor predeterminado particular en este caso.

Básicamente, cuando algo quiere convertirse en el primer respondedor, se pide al primer respondedor actual (si lo hay) que renuncie, y luego el nuevo objeto se convierte en el primer respondedor. Esto puede hacer que el sistema muestre el teclado en pantalla o realice alguna otra acción. Cuando el primer respondedor renuncia, esto puede causar que el sistema oculte el teclado en pantalla o realice alguna otra acción.

Cuando se produce un evento no táctil, primero se envía a la ventana UI. UIWindow lo entrega al primer respondedor. La documentación no parece especificar si UIWindow intenta manejar el evento en sí o no (y lo pasa a UIApplication como de costumbre si no lo maneja él solo) o simplemente ignora el evento si no hay un primer respondedor.

Consulte the documentation para más detalles.

Cuestiones relacionadas