2011-08-29 9 views
14

Tengo un UIButton debajo de una UIView (transparente). El UIView de arriba tiene un UISwipeGestureRecognizer agregado, y ese es su único propósito: detectar ciertos gestos de barrido. Quiero que todos los demás toques sean ignorados por ese UIView y pasados ​​a otros puntos de vista (como mi UIButton debajo). Actualmente, el UIView anterior parece detectar el tap (por ejemplo), no hacer nada (como debería ser) y no dejar que el UIButton de abajo tenga la oportunidad de responder.¿Cómo pasar un 'toque' a UIButton que se encuentra debajo de UIView con UISwipeGestureRecognizer?

Preferiría no implementar mi propio reconocedor de barrido, si es posible. ¿Alguna solución/consejo? Básicamente, solo quiero saber cómo decirle a un UIView que preste atención solo a cierto tipo de reconocedor de gestos agregado e ignorar (y así dejar pasar las vistas anteriores) todos los demás toques.

Respuesta

2

Debo haber estado en un funk ayer - Me levanté con una solución simple hoy. Agregue UISwipeGesture a una vista que es una supervista tanto para UIView como para UIButton. Luego, al procesar esos deslizamientos, descubra dónde se originó el deslizamiento, y si ese punto está en el marco de donde solía tener el UIView. (Como ya he mencionado, la única razón de la existencia de la UIView fue definir un área objetivo para estos gestos banda magnética.)

0

¿No puedes colocar el botón en la parte superior de la vista y agregar los reconocedores de gestos a ese botón también?

Al final, su UIButton hereda el formulario UIView a través de UIControl. Por lo tanto, prácticamente no hay nada que puedas hacer con una vista, pero no con un botón.

+0

No, no puedo poner el UIButton encima de la UIView, por razones no relacionadas, y no creo que sea inteligente hacerlo de todos modos para tratar de resolver este problema. – danbretl

14

se ha marcado:

mySwipeGesture.cancelsTouchesInView = NO; 

para permitir los toques a ser enviados a la ver la jerarquía, así como el gesto?

Además, asegúrese de que la vista en la parte superior es:

theTransparentView.opaque = NO; 
theTransparentView.userInteractionEnabled = YES; 

he tenido un éxito bastante bueno adjuntando gestos a la vista padre sin necesidad de crear una subvista transparente en la parte superior por el gesto. ¿Estás seguro de que necesitas hacer eso?

0

En mi caso, lo solucioné al no usar un botón, sino más bien un UITAPGestureRecognizer. Mi reconocedor de gestos de panoramización se agregó a la vista de fondo, y el gesto de toque se agregó a una vista sobre él.

Cuestiones relacionadas