Estoy tratando de asignar un UIImageView
a una acción cuando el usuario la toca.
Sé cómo crear una acción para a UIButton
, pero ¿cómo podría imitar el mismo comportamiento de a UIButton
, pero usando a UIImageView
?
ios
swift
uiimageview
usuario3706773
fuente
fuente
@objc
modificador a la función.Debe agregar un reconocedor de gestos (para tocar use UITapGestureRecognizer , para tocar y sostener use UILongPressGestureRecognizer ) a su
UIImageView
.E implementar el método selector como:
fuente
Puede agregar un
UITapGestureRecognizer
a imageView, simplemente arrastre uno a su Storyboard / xib, arrastre Ctrl y arrastre desde imageView al gestoReconocidor, y Ctrl-arrastre desde el gestorReconocidor al archivo Swift para crear un archivoIBAction
.También deberá habilitar las interacciones del usuario en el
UIImageView
, como se muestra en esta imagen:fuente
UIImageView
no responde a toques por defecto. También debe habilitar las interacciones del usuario.Para swift 2.0 y superior, haga esto
fuente
Código Swift4
Pruebe esto con algunos métodos de extensión nuevos:
Ahora, cuando queramos agregar a
UITapGestureRecognizer
a unaUIView
oUIView
subclase comoUIImageView
, ¡podemos hacerlo sin crear funciones asociadas para los selectores!Uso:
fuente
En realidad, podría configurar la imagen de
UIButton
lo que normalmente pondría en aUIImageView
. Por ejemplo, donde harías:En su lugar, podría usar:
Entonces, así es como se vería su código:
Lo mejor de usar este método es que si tiene que cargar la imagen desde una base de datos, puede configurar el título del botón antes de configurar la imagen:
Para decirle a sus usuarios que está cargando la imagen
fuente
Es necesario agregar perezoso para que TapGestureRecognizer se registre,
ya que el 'self' en UITapGestureRecognizer (target: self ...) será nulo si no es un var perezoso. Incluso si establece isUserInteractionEnable = true, no se registrará sin lazy var.
fuente
Puede colocar un
UIButton
fondo transparente sobre la parte superiorUIImageView
y escuchar un toque en el botón antes de cargar la imagen.fuente
Swift 4 Code
Paso 1 en ViewdidLoad ()
Paso 2 Agregar la siguiente función
Está probado y funciona correctamente
fuente
Sugiero colocar el botón invisible (opacidad = 0) en su vista de imagen y luego manejar la interacción en el botón.
fuente