2010-03-19 5 views
7

Título más o menos lo dice todo. En respuesta a un evento touchesBegan, mi UIViewController se repite y agrega algunas subvistas.No recibe toques Ended/Moved/Cancelled después de agregar subView

Nunca recibe el touchesEnded. Supongo que porque las subvistas agregadas están de alguna manera interceptando el evento. Intenté llamar al resignFirstResponder en las subvistas sin ningún resultado.

El código funciona bien cuando no agrego las vistas secundarias y los eventos táctiles se llaman como normales.

¿Alguna idea?

Gracias

EDITAR: Un poco de detalle y cómo lo arreglé.

Básicamente tenía una vista maestra con algunas subvistas, cuando tocaba la subvista, el evento pasaba a la vista maestra, sin embargo, en este evento estaba eliminando las subvistas y agregando nuevas en su lugar. El hecho de que el toque se originó en una subvista que ya no existía significaba que el resto del toque se perdió.

que fija esta reemplazando hitTest: withEvent en mi opinión maestro, para detener toques vez de hacerse la prueba en contra de los subvistas

+2

¿Algún código? +++++ – kennytm

+0

Hmmm, bueno, el código es bastante complejo, pero codifiqué el ejemplo más simple posible para publicar aquí y funcionó bien ... así que +1 para el empujón en la dirección correcta ... ........ publicará cuando haya descubierto la diferencia – Sam

Respuesta

8

¿trató de establecer la propiedad userInteractionEnabled a un no por la subvista antes de añadirla como una subvista?

+0

no, esto suena prometedor, intentará ... – Sam

+0

Tal vez alguna subvista (s) consumió ese evento mediante la implementación de un mal formado -touchesEnded: withEvent? – ZhangChn

1

vas a necesitar pasar el contacto de la subvista en el supervista usar algo como esto:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 

    [super touchesBegan:touches withEvent:event]; 
} 
+0

las subvistas tampoco reciben el evento. Si agrego una subvista al lugar donde ocurrió el evento touchesBegan, ni la subvista ni la supervista reciben toquesMoved/Cancelled/Ended – Sam

+3

Esto pasa el toque al superCLASS, no a la superVIEW. ;) – Pascal

Cuestiones relacionadas