Me gustaría hacer que se pueda hacer clic en UILabel.
He intentado esto, pero no funciona:
class DetailViewController: UIViewController {
@IBOutlet weak var tripDetails: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
...
let tap = UITapGestureRecognizer(target: self, action: Selector("tapFunction:"))
tripDetails.addGestureRecognizer(tap)
}
func tapFunction(sender:UITapGestureRecognizer) {
print("tap working")
}
}
ios
swift
uilabel
uitapgesturerecognizer
Daniele B
fuente
fuente
UILabel
? ¿Estás seguro de que estás tocando en el marco de la etiqueta? ¿Tienes unaUIViews
etiqueta que cubre? ¿EstáuserInteractionEnabled
configuradoTrue
para la etiqueta?Respuestas:
¿Ha tratado de conjunto
isUserInteractionEnabled
detrue
latripDetails
etiqueta? Esto debería funcionar.fuente
Actualización de Swift 3
Reemplazar
con
Ejemplo:
fuente
@objc
.Actualización de SWIFT 4
fuente
Actualización de Swift 3
fuente
Swift 5
Similar a @liorco, pero necesita reemplazar @objc con @IBAction .
Esto está funcionando en Xcode 10.2.
fuente
@IBAction
solo es necesario para exponer el método al Creador de interfaces de Xcode (de ahí IB). También actúa como@objc
si agregara los gestos u otras acciones con código, debería usar la@objc
anotaciónBuena y conveniente solución:
En su ViewController:
Puede colocar esto en su ViewController o en otro archivo .swift (por ejemplo, CustomView.swift):
En Storyboard seleccione Label y en el panel derecho en "Identity Inspector" en la clase de campo seleccione LabelButton.
No olvide habilitar en el inspector de atributos de etiquetas "Interacción del usuario habilitada"
fuente
Debe habilitar la interacción del usuario de esa etiqueta .....
Por ej.
yourLabel.userInteractionEnabled = true
fuente
Para swift 3.0 También puede cambiar la duración del tiempo de pulsación prolongada del gesto
fuente
Es bastante fácil pasarlo por alto como lo hice yo, pero no olvides usarlo en
UITapGestureRecognizer
lugar de hacerloUIGestureRecognizer
.fuente
Como se describe en la solución anterior, primero debe habilitar la interacción del usuario y agregar el gesto de toque
este código ha sido probado usando
Swift4 - Xcode 9.2
fuente
Cannot invoke initializer for type 'UITapGestureRecognizer' with an argument list of type '(() -> Void)'
cuando intento esto.