He descubierto que puedo crear UILabel mucho más rápido que UITextField y planeo usar UILabel la mayor parte del tiempo para mi aplicación de visualización de datos.
Sin embargo, para abreviar la historia, deseo permitir que el usuario toque un UILabel y que mi devolución de llamada responda a eso. ¿Es eso posible?
Gracias.
userInteractionEnabled = true
Respuestas:
Puede agregar una
UITapGestureRecognizer
instancia a su UILabel.Por ejemplo:
fuente
Si está utilizando guiones gráficos, puede hacer todo este proceso en el guión gráfico sin código adicional. Agregue una etiqueta al guión gráfico, luego agregue un gesto de toque a la etiqueta. En el panel Utilidades, asegúrese de que la etiqueta "Interacción del usuario habilitada" esté marcada. Desde el gesto de toque (en la parte inferior de su controlador de vista en el guión gráfico), presione Ctrl + clic y arrastre a su archivo ViewController.h y cree una Acción. Luego, implemente la acción en el archivo ViewController.m.
fuente
Swift 3.0
Inicializar el gesto para
tempLabel
Receptor de acción
Swift 4.0
Inicializar el gesto para
tempLabel
Receptor de acción
fuente
Swift 2.0:
Estoy agregando una cadena nsmutable como texto de sampleLabel, permitiendo la interacción del usuario, agregando un gesto de toque y activando un método.
fuente
En su lugar, puede usar un UIButton y configurar el texto como desee. El botón no tiene que verse como un botón si no quieres
fuente
Para agregar el gesto Tap en UILable
y evaluar el método selector
Nota: agregue UIGestureRecognizerDelegate en el archivo .h
fuente
Versión rápida:
var tapGesture : UITapGestureRecognizer = UITapGestureRecognizer()
Luego
viewDidLoad()
, adentro , agregue esto:fuente
Si desea utilizar texto de varias líneas en su botón, cree un texto de varias líneas
UILabel
y agréguelo como una subvista en su botón.por ejemplo:
fuente
Swift 3 de Alvin George
fuente
La versión Swift se ve así:
fuente
Personalmente prefiero el método de escribir una extensión para UILabel. Esto es lo que utilizo.
Luego lo usaría así desde cualquier instancia de UILabel:
Esto puede potencialmente causar algunas pérdidas de memoria, creo, pero aún no he determinado la mejor manera de resolverlas.
fuente