Estoy intentando interceptar cualquier actividad (es decir, toques) que ocurra dentro de toda mi aplicación.Prueba de UIView: con evento: llamada tres veces?
En otras palabras, estoy tratando de recibir notificaciones sobre cualquier evento táctil que ocurra dentro de mi UIView principal, que contenga el resto de mis controles. Para hacerlo, pensé que el método de UIView -hitTest: withEvent: era una buena solución.
Sin embargo, cuando NSLog en este método sobrescrito antes de llamar a [super hitTest: ... withEvent: ...], veo que se llama 3 veces por cualquier toque que haga, y no puedo ver ninguna diferencia en el evento que recibo cada vez que se llama.
Aquí es cómo se implementa el método en la vista principal de mi solicitud:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
NSLog(@"hitTest:withEvent called :");
NSLog(@"Event: %@", event);
NSLog(@"Point: %@", NSStringFromCGPoint(point));
NSLog(@"Event Type: %d", event.type);
NSLog(@"Event SubType: %d", event.subtype);
NSLog(@"---");
return [super hitTest:point withEvent:event];
}
Y esto es lo que NSLog de un solo toque en esta vista:
2010-11-29 14:09:26.892 Application[68818:207] hitTest:withEvent called :
2010-11-29 14:09:26.892 Application[68818:207] Event: <UITouchesEvent: 0x5716d60> timestamp: 37935.2 touches: {(
)}
2010-11-29 14:09:26.892 Application[68818:207] Point: {173, 498}
2010-11-29 14:09:26.892 Application[68818:207] Event Type: 0
2010-11-29 14:09:26.892 Application[68818:207] Event SubType: 0
2010-11-29 14:09:26.893 Application[68818:207] ---
2010-11-29 14:09:26.893 Application[68818:207] hitTest:withEvent called :
2010-11-29 14:09:26.893 Application[68818:207] Event: <UITouchesEvent: 0x5716d60> timestamp: 37935.2 touches: {(
)}
2010-11-29 14:09:26.893 Application[68818:207] Point: {173, 498}
2010-11-29 14:09:26.893 Application[68818:207] Event Type: 0
2010-11-29 14:09:26.893 Application[68818:207] Event SubType: 0
2010-11-29 14:09:26.893 Application[68818:207] ---
2010-11-29 14:09:26.893 Application[68818:207] hitTest:withEvent called :
2010-11-29 14:09:26.894 Application[68818:207] Event: <UITouchesEvent: 0x5716d60> timestamp: 37944.9 touches: {(
)}
2010-11-29 14:09:26.894 Application[68818:207] Point: {173, 498}
2010-11-29 14:09:26.894 Application[68818:207] Event Type: 0
2010-11-29 14:09:26.894 Application[68818:207] Event SubType: 0
2010-11-29 14:09:26.894 Application[68818:207] ---
Cómo podría ¿Hay alguna diferencia entre esas tres notificaciones para activar la acción que quiero hacer solo una vez con un solo toque?
¡Gracias de antemano!
¿Alguna vez encontró una solución limpia para esto? Estoy teniendo el mismo problema. La evaluación del tiempo parece que funcionaría, pero podría ser fácilmente susceptible a los cambios del SDK en el futuro. –
¿Alguna suerte sobre por qué sucede esto? Estoy intentando resolver esto yo mismo – prostock
¿Algún progreso en este tema? –