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 unaUIViewsetiqueta que cubre? ¿EstáuserInteractionEnabledconfiguradoTruepara la etiqueta?Respuestas:
¿Ha tratado de conjunto
isUserInteractionEnableddetruelatripDetailsetiqueta? 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
@IBActionsolo es necesario para exponer el método al Creador de interfaces de Xcode (de ahí IB). También actúa como@objcsi agregara los gestos u otras acciones con código, debería usar la@objcanotació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 = truefuente
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
UITapGestureRecognizerlugar 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.