Tengo una UIView y le agregué un gesto de toque:
let tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:"))
tap.delegate = self
myView.addGesture(tap)
Estoy tratando de llamarlo mediante programación en el archivo de prueba.
sendActionForEvent
Estoy usando esta función, pero no funciona:
myView.sendActionForEvent(UIEvents.touchUpDown)
Muestra el selector no reconocido enviado a la instancia.
¿Como puedó resolver esté problema?
imageView.userInteractionEnabled = true
si está utilizando una vista de imagen. Quedé atrapado en eso por mucho tiempo.Respuestas:
Debe inicializar
UITapGestureRecognizer
con un objetivo y una acción, así:Luego, debe implementar el controlador, que se llamará cada vez que ocurra un evento tap:
Entonces, llamar a su controlador de eventos de reconocimiento de gestos de toque es tan fácil como llamar a un método:
fuente
tap.delegate = self
no es necesario, ya que usted estableció un objetivo y una acciónPara cualquiera que esté buscando la solución Swift 3
fuente
isUserInteractionEnabled
es realmente necesario? ¿El valor predeterminado es falso?view.isUserInteractionEnabled = true
es la clave cuando su vista es ImageView o cualquier subclase de UIVIew en lugar de UIControl.Para Swift 4 :
En Swift 4, debe indicar explícitamente que la función activada se puede llamar desde Objective-C, por lo que también debe agregar @objc a su función handleTap.
Vea la respuesta de @Ali Beadle aquí: Swift 4 agregar gesto: anular vs @objc
fuente
view.isUserInteractionEnabled = true
es la clave cuando su vista es ImageView o cualquier subclase de UIVIew en lugar de UIControl.Solo una nota: no olvide habilitar la interacción en la vista:
fuente
PASO 1
PASO 2
PASO 3
PASO 4
SALIDA
fuente
Implementando gesto de toque
Llama a esta función cuando se reconoce el toque.
Actualización para For Swift 3
fuente
Swift 4
fuente
Así es como funciona en Swift 3:
fuente
Respuesta completa para Swift 4
Paso 1: crea una salida para la vista
Paso 2: define un gesto de toque
Paso 3: crear la función ObjC (llamada cuando se toca la vista)
Paso 4: agregue lo siguiente dentro de viewDidLoad ()
fuente
Swift 5.1 Ejemplo para tres vistas
Paso: 1 -> Agregar vista de guión gráfico y agregar vista de salida Controlador UIView
Paso: 2 -> Agregar etiqueta de vista de StoryBoard
Paso: 3 -> Agregar gesto
Paso: 4 -> seleccionar vista
fuente
Trabajé en Xcode 6.4 en Swift. Vea abajo.
fuente
Si desea que el código del Objetivo C se dé a continuación,
o desea que el código rápido se da a continuación,
fuente
Debe inicializar UITapGestureRecognizer con un objetivo y una acción, así:
Luego, debe implementar el controlador, que se llamará cada vez que ocurra un evento tap:
fuente
fuente
Swift 4
Primero, cree un objeto de UITapGestureRecognizer
El segundo paso es inicializar UITapGestureReconizer. Habilite la interacción del usuario y luego agréguela.
Tercero, crea un método
fuente
prueba la siguiente extensión
y luego úsalo:
incluso puedes usarlo para celular
fuente
Trabajé en Xcode 7.3.1 en Swift 2.2. Vea abajo.
fuente
addTapGesture()
en suviewDidLoad()
Quería especificar dos puntos que me seguían causando problemas.
fuente
xCode 9.3, Swift 4.0
fuente
Vista interior
fuente
Aquí está la forma más simple de agregar gestos a la vista en Swift 5
fuente
Pruebe el siguiente código rápido (probado en Xcode 6.3.1):
Tenga en cuenta que su objetivo podría ser cualquier subclase de UIResponder, consulte (probado en Xcode 6.3.1):
fuente
En lugar de invocar UITapGestureRecognizer de myView, puede llamar directamente a la
handleTap
función,fuente