descargar - ¿Cuando se toca el método Cancelado se invocan en iPhone?
mi id de apple (4)
Soy capaz de entender que cuando el usuario solo toca la vista, toca Comenzar y Terminar llamada. Cuando el usuario desliza su mano en una vista, se toca el método Movido. Pero, ¿cuándo se toca el botón Cancelado o por qué acción en el usuario se llama a este método?
Creo que probablemente la razón más común por la que se llama a los toques cancelados (ya que iOS 3.2 de todos modos) es después del reconocimiento de un gesto por parte de UIGestureRecognizer. Si su vista tiene algún tipo de reconocedor de gestos adjunto, a menudo es muy importante proporcionar una implementación personalizada del método touchesCancelled: tenga en cuenta que esto incluye vistas listas para usar que utilizan reconocedores de gestos, incluido UIScrollView.
De forma predeterminada, los reconocedores de gestos cancelan la entrega de toques a la vista de prueba de impacto al momento del reconocimiento, aunque este comportamiento se puede desactivar. Esto implica enviar el mensaje touchesCancelled a esa vista, probablemente siguiendo un mensaje de touchesBegan o touchesMoved. Si su código de manejo táctil se basa en el código implementado en el método touchesEnded, es posible que esto no se dispare nunca y se produzca algún tipo de problema grave, por lo que es necesario atar adecuadamente los cabos sueltos de los botones táctiles.
Los entresijos de la funcionalidad del reconocedor de gestos son, obviamente, un poco más complejos de lo que he mencionado aquí. Recomendaría leer la documentación de Reconocedores de gestos de Apple.
Además, echa un vistazo a los videos de la WWDC sobre reconocedores de gestos (a partir de 2010).
De los documentos de referencia de Apple.
Enviado al receptor cuando un evento del sistema (como una advertencia de poca memoria) cancela un evento táctil.
Discusión
Este método se invoca cuando el marco Cocoa Touch recibe una interrupción del sistema que requiere la cancelación del evento táctil; para esto, genera un objeto UITouch con una fase de UITouchPhaseCancel. La interrupción es algo que puede hacer que la aplicación ya no esté activa o que la vista se elimine de la ventana.
Cuando un objeto recibe un mensaje touchesCancelled: withEvent: debería limpiar cualquier información de estado que se haya establecido en su touchesBegan: withEvent: implementación.
La implementación por defecto de este método no hace nada. Sin embargo, las subclases UIKit inmediatas de UIResponder, particularmente UIView, reenvían el mensaje hacia la cadena de respuesta.
Nota: los toques también se cancelan si UIView
una animación touchesBegan
después de que touchesBegan
. Para evitar esto, asegúrese de incluir UIViewAnimationOptionAllowUserInteraction:
p.ej
[UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionAllowUserInteraction animations:^{
self.aView.hidden = NO;
self.aView.alpha = 1;
} completion:nil];
Y, de la Guía de Manejo de Eventos para iOS , p. 19:
Envía el mensaje touchesCancelled: withEvent: cuando la secuencia táctil se cancela por un evento del sistema, como una llamada telefónica entrante.