tacto tactil solucion sensibilidad responde plus pantalla funciona enfermedad cambie iphone uiimageview uitouch

iphone - tactil - ¿Cómo puedo detectar el evento táctil de un UIImageView



sensibilidad pantalla iphone 6 plus (10)

He colocado una imagen (UIImageView) en la barra de navegación. Ahora quiero detectar el evento táctil y quiero manejar el evento. ¿Podrías decirme cómo puedo hacer eso?

Gracias.


Agregue un gesto en esa imagen view.add en esa vista, y luego también detectaría el gesto en la imagen. Podría intentar con el método de delegado del evento táctil, entonces en ese caso también podría estar detectando. Gracias


En lugar de hacer un UIImageView tangible y colocarlo en la barra de navegación, solo deberías crear un UIBarButtonItem, que creas de un UIImageView.

Primero haz la vista de la imagen:

UIImageView *yourImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"nameOfYourImage.png"]];

A continuación, saque el elemento del botón de la barra de su vista de imagen:

UIBarButtonItem *yourBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:yourImageView];

A continuación, agregue el elemento del botón de la barra a su barra de navegación:

self.navigationItem.rightBarButtonItem = yourBarButtonItem;

Recuerde que este código va al controlador de vista que se encuentra dentro de una matriz de controlador de vista de controlador de navegación. Así que, básicamente, este "elemento táctil del botón de la barra con aspecto de imagen" solo aparecerá en la barra de navegación cuando este controlador de vista se muestre. Cuando presione otro controlador de vista, este elemento del botón de la barra de navegación desaparecerá ~


En términos prácticos, no hagas eso.

En su lugar, agregue un botón con estilo personalizado (sin gráficos de botones a menos que especifique imágenes) sobre UIImageView. Luego adjunte los métodos que desee para eso.

Puede usar esa técnica para muchos casos en los que realmente desea que un área de la pantalla actúe como un botón en lugar de interferir con el tacto.


He estado en diferentes hilos en las últimas horas tratando de encontrar una solución para mi problema, fue en vano. Veo que muchos desarrolladores comparten este problema, y ​​creo que la gente de aquí lo sabe. Tengo varias imágenes dentro de UIScrollView , tratando de obtener eventos tap sobre ellas.

no UIImangeView ningún evento de un UIImangeView , pero obtengo un evento de un UILable similar con parámetros muy similares que estoy configurando. en IOS 5.1.

Ya he hecho lo siguiente:

  1. establezca setUserInteractionEnabled en YES tanto para `UIImageView como para la vista principal.
  2. establece setMultipleTouchEnabled en SÍ para UIImageView .
  3. Intentó subclasificar UIImageView , no ayudó a ninguno.

Adjuntando algunos códigos a continuación, en este código inicializo tanto UIImageView como UILabel , la etiqueta funciona bien en términos de eventos de disparo. Traté de mantener el código irrelevante. Gracias chicos, Ilan

UIImageView *single_view = [[UIImageView alloc]initWithFrame:CGRectMake(200, 200, 100, 100)]; single_view.image=img; single_view.layer.zPosition=4; UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureCaptured:)]; [single_view addGestureRecognizer:singleTap]; [single_view setMultipleTouchEnabled:YES]; [single_view setUserInteractionEnabled:YES]; [self.myScrollView addSubview:single_view]; self.myScrollView.userInteractionEnabled=YES; UILabel *testLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; testLabel.backgroundColor=[UIColor redColor]; [self.myScrollView addSubview:testLabel]; [testLabel addGestureRecognizer:singleTap]; [testLabel setMultipleTouchEnabled:YES]; [testLabel setUserInteractionEnabled:YES]; testLabel.layer.zPosition=4;

Y el método que maneja el evento:

- (void)singleTapGestureCaptured:(UITapGestureRecognizer *)gesture { UIView *tappedView = [gesture.view hitTest:[gesture locationInView:gesture.view] withEvent:nil]; NSLog(@"Touch event on view: %@",[tappedView class]); }

Como se dijo, se recibe el toque de la etiqueta.


Lo que podría querer hacer es anular el touchesBegan:withEvent: de la UIView (o subclase) que contiene su subvista UIImageView .

Dentro de este método, prueba si alguno de los toques de UITouch cae dentro de los límites de la instancia de UIImageView (digamos que se llama imageView ).

Es decir, ¿el elemento CGPoint [touch locationInView] cruza con el elemento [imageView bounds] ? Mire en la función CGRectContainsPoint para ejecutar esta prueba.


Para agregar un evento táctil a un UIImageView usa lo siguiente en tu .m

UITapGestureRecognizer *newTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myTapMethod)]; [myImageView setUserInteractionEnabled:YES]; [myImageView addGestureRecognizer:newTap]; -(void)myTapMethod{ // treat image tap }

Espero que ayude.


Para aquellos de ustedes que buscan una solución Swift 4 para esta respuesta. Puede usar lo siguiente para detectar un evento táctil en un UIImageView.

let gestureRecognizer: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(imageViewTapped)) imageView.addGestureRecognizer(gestureRecognizer) imageView.isUserInteractionEnabled = true

Deberá definir su selector de la siguiente manera:

@objc func imageViewTapped() { // Image has been tapped }


Primero debe colocar un UIButton luego puede agregar imagen de fondo para este botón o necesita colocar un UIImageView sobre el botón.


También puede agregar un UIGestureRecognizer. No requiere que agregue un elemento adicional en la jerarquía de su vista, pero aún así le proporciona todos los códigos bien escritos para manejar los eventos táctiles con una interfaz bastante simple:

UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)]; swipeRight.direction = UISwipeGestureRecognizerDirectionRight; [imgView_ addGestureRecognizer:swipeRight]; [swipeRight release]; UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)]; swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft; [imgView_ addGestureRecognizer:swipeLeft]; [swipeLeft release];


Un UIImageView se deriva de un UIView que se deriva de UIResponder por lo que está listo para manejar eventos táctiles. Deberá proporcionar los touchesBegan , touchesMoved y touchesEnded y se les llamará si el usuario toca la imagen. Si todo lo que desea es un evento tap, es más fácil usar un botón personalizado con la imagen configurada como imagen del botón. Pero si quieres un control más fino sobre grifos, movimientos, etc., este es el camino a seguir.

También querrás ver algunas cosas más:

  • canBecomeFirstResponder y devuelve SÍ para indicar que la vista puede convertirse en el foco de los eventos táctiles (el valor predeterminado es NO).

  • Establezca la propiedad userInteractionEnabled en YES. El valor predeterminado para UIViews es SÍ, pero para UIImageViews es NO, por lo que debe activarlo explícitamente.

  • Si desea responder a eventos multitáctiles (es decir, pellizcar, ampliar, etc.), querrá configurar multipleTouchEnabled en SÍ.