Pasando por toques a UIViews debajo de
Tengo unUIView
con 4 botones y otroUIView
en la parte superior de la vista de botones. La vista superior contiene unaUIImageView
con unUITapGestureRecognizer
en eso
l comportamiento que intento crear es que cuando el usuario toca elUIImageView
se alterna entre ser pequeño en la esquina inferior derecha de la pantalla y animarse para hacerse más grande. Cuando es grande, quiero que los botones en la vista inferior estén deshabilitados y cuando es pequeño y en la esquina inferior derecha, quiero que se pasen los toques a los botones y que funcionen normalmente. Ya casi estoy allí, pero no puedo obtener los toques para pasar a los botones a menos que desactive laUserInteractions
de la vista superior.
Tengo esto en miinitWithFrame:
de la vista superior:
// Add a gesture recognizer to the image view
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)];
tapGestureRecognizer.cancelsTouchesInView = NO;
[imageView addGestureRecognizer:tapGestureRecognizer];
[tapGestureRecognizer release];
y esta es miimageTapped:
método:
- (void) imageTapped:(UITapGestureRecognizer *) gestureRecognizer {
// Toggle between expanding and contracting the image
if (expanded) {
[self contractAnimated:YES];
expanded = NO;
gestureRecognizer.cancelsTouchesInView = NO;
self.userInteractionEnabled = NO;
self.exclusiveTouch = NO;
}
else {
[self expandAnimated:YES];
expanded = YES;
gestureRecognizer.cancelsTouchesInView = NO;
self.userInteractionEnabled = YES;
self.exclusiveTouch = YES;
}
}
Con el código anterior, cuando la imagen es grande, los botones están inactivos, cuando toco la imagen se encoge y los botones se activan. Sin embargo, la imagen pequeña no recibe los toques y, por lo tanto, no se expandirá.
Si configuroself.userInteractionEnabled = YES
en ambos casos, la imagen se expande y contrae cuando se toca, pero los botones nunca reciben toques y actúan como si estuvieran deshabilitados.
¿Está lejos para que la imagen se expanda y se contraiga cuando se toca, pero los botones debajo solo reciben toques si la imagen está en estado contraído? ¿Estoy haciendo algo estúpido aquí y me falta algo obvio?
Me estoy volviendo loco tratando de hacer que esto funcione para que cualquier ayuda sea apreciada,
Dave
ACTUALIZAR
Para más pruebas, anulé latouchesBegan:
ytouchesCancelled:
métodos y llamó a sus súper implementaciones en mi vista que contiene el UIImageView. Con el código anterior, latouchesCancelled:
nunca se llama y eltouchesBegan:
siempre se llama.
or lo tanto, parece que la vista está recibiendo los toques, simplemente no se pasan a la vista debajo.
ACTUALIZA
¿Esto se debe a la forma en que funciona la cadena de respuesta? Mi jerarquía de vistas se ve así:
VC - View1
-View2
-imageView1 (has tapGestureRecogniser)
-imageView2
-View3
-button1
-button2
Creo que el sistema operativo primero realiza una prueba de éxito, ya que dice que View2 está al frente, por lo que debería recibir todos los toques y nunca se pasan a View3 a menos que userInteractions esté establecido en NO para View2, en cuyo caso también se impide que imageView1 reciba toques. ¿Es así como funciona y hay una manera para que View2 pase por sus toques a View3?