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.
ios
iphone
uiimageview
uitouch
ebaccount
fuente
fuente
Respuestas:
En términos prácticos, no hagas eso.
En su lugar, agregue un botón con estilo personalizado (sin gráficos de botón a menos que especifique imágenes) sobre UIImageView. Luego adjunte los métodos que desee que se llamen a 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 jugar con las cosas táctiles.
fuente
A
UIImageView
se deriva de aUIView
que se deriva de,UIResponder
por lo que está listo para manejar eventos táctiles. Usted querrá dar eltouchesBegan
,touchesMoved
ytouchesEnded
los métodos y ellos se llama si el usuario toca la imagen. Si todo lo que desea es un evento de toque, es más fácil usar un botón personalizado con la imagen configurada como la imagen del botón. Pero si desea un control más fino de los golpes, movimientos, etc., este es el camino a seguir.También querrá ver algunas cosas más:
Anule
canBecomeFirstResponder
y devuelva YES para indicar que la vista puede convertirse en el foco de eventos táctiles (el valor predeterminado es NO).Establezca la
userInteractionEnabled
propiedad en YES. El valor predeterminado paraUIViews
es SÍ, pero paraUIImageViews
es NO, por lo que debe activarlo explícitamente.Si desea responder a eventos multitáctiles (es decir, pellizcar, hacer zoom, etc.), querrá configurarlo
multipleTouchEnabled
en SÍ.fuente
userInteractionEnabled
SÍ en mi vista de padres. Ver stackoverflow.com/questions/5887305/…Para agregar un evento táctil a un UIImageView, use lo siguiente en su .m
Espero que ayude.
fuente
También puede agregar un UIGestureRecognizer. No requiere que agregue un elemento adicional en su jerarquía de vista, pero aún le proporciona todo el código bien escrito para manejar eventos táctiles con una interfaz bastante simple:
fuente
He estado en diferentes hilos en las últimas horas tratando de encontrar una solución a mi problema, sin éxito. Veo que muchos desarrolladores comparten este problema y creo que la gente de aquí lo sabe. Tengo varias imágenes dentro de un
UIScrollView
, tratando de obtener eventos de tap en ellas.no
UIImangeView
obtengo ningún evento de un , pero obtengo un evento de un similarUILable
con parámetros muy similares que le estoy configurando. bajo IOS 5.1.Ya hice lo siguiente:
UIImageView
.UIImageView
, no ayudó a nadie.Adjuntando un poco de código a continuación, en este código inicializo a
UIImageView
yUILabel
, la etiqueta funciona bien en términos de eventos de activación. Intenté mantener el código irrelevante. Gracias chicos, IlanY el método que maneja el evento:
Como se dijo, se recibe el grifo de la etiqueta.
fuente
En lugar de hacer un UIImageView táctil y luego colocarlo en la barra de navegación, debe crear un UIBarButtonItem, que crea a partir de un UIImageView.
Primero haz la vista de imagen:
Luego, haga que el elemento de botón de barra salga de su vista de imagen:
Luego agregue el elemento del botón de la barra a su barra de navegación:
Recuerde que este código va al controlador de vista que está dentro de una matriz de controlador de vista del controlador de navegación. Básicamente, este "elemento de botón de barra con apariencia de imagen táctil" solo aparecerá en la barra de navegación cuando se muestre este controlador de vista. Cuando presiona otro controlador de vista, este elemento del botón de la barra de navegación desaparecerá ~
fuente
Lo que podría querer hacer es anular el
touchesBegan:withEvent:
método de laUIView
(o subclase) que contiene suUIImageView
subvista.Dentro de este método, pruebe si alguno de los
UITouch
toques cae dentro de los límites de laUIImageView
instancia (digamos que se llamaimageView
).Es decir, ¿el
CGPoint
elemento se[touch locationInView]
cruza con elCGRect
elemento[imageView bounds]
? Busque la funciónCGRectContainsPoint
para ejecutar esta prueba.fuente
Primero debe colocar un UIButton y luego puede agregar una imagen de fondo para este botón o debe colocar un UIImageView sobre el botón.
o
Puede agregar el gesto de toque a un UIImageView para que obtenga la acción de clic cuando toque en UIImageView.
fuente
Para aquellos de ustedes que buscan una solución Swift 4 para esta respuesta. Puede utilizar lo siguiente para detectar un evento táctil en un UIImageView.
Luego deberá definir su selector de la siguiente manera:
fuente
Agregue un gesto en esa vista.Agregue una imagen en esa vista, entonces también estaría detectando un gesto en la imagen. ¿Podría intentarlo con el método delegado de evento táctil y, en ese caso, también podría estar detectando? Gracias
fuente