Как заставить UILabel реагировать на нажатие?

Я обнаружил, что я могу создать UILabel намного быстрее, чем UITextField, и я планирую использовать UILabel большую часть времени для моего приложения для отображения данных.

Короче говоря, я хочу, чтобы пользователь нажал на UILabel и ответил на мой ответ. Это возможно?

Благодарю.

10 Solutions collect form web for “Как заставить UILabel реагировать на нажатие?”

Вы можете добавить экземпляр UITapGestureRecognizer в свой UILabel.

Например:

 UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTapped)]; tapGestureRecognizer.numberOfTapsRequired = 1; [myLabel addGestureRecognizer:tapGestureRecognizer]; myLabel.userInteractionEnabled = YES; 

Если вы используете раскадровки, вы можете сделать весь этот процесс в раскадровке без дополнительного кода. Добавьте ярлык в раскадровку, а затем добавьте жук к ярлыку. В области «Утилиты» убедитесь, что для метки отмечен флажок «Взаимодействие с пользователем». С жестом tap (внизу вашего контроллера просмотра в раскадровке), ctrl + click и перетащите в файл ViewController.h и создайте Action. Затем выполните действие в файле ViewController.m.

Swift 2.0:

Я добавляю строку nsmutable в качестве текста sampleLabel, позволяя пользователю взаимодействовать, добавляя жест нажатия и запуская метод.

 override func viewDidLoad() { super.viewDidLoad() let newsString: NSMutableAttributedString = NSMutableAttributedString(string: "Tap here to read the latest Football News.") newsString.addAttributes([NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleDouble.rawValue], range: NSMakeRange(4, 4)) sampleLabel.attributedText = newsString.copy() as? NSAttributedString let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "tapResponse:") tapGesture.numberOfTapsRequired = 1 sampleLabel.userInteractionEnabled = true sampleLabel.addGestureRecognizer(tapGesture) } func tapResponse(recognizer: UITapGestureRecognizer) { print("tap") } 

Вместо этого вы можете использовать UIButton и задавать текст так, как хотите. Кнопка не должна выглядеть как кнопка, если вы не хотите

Swift 3.0

Инициализировать жест для tempLabel

 tempLabel?.text = detailsModel.displayName let tapAction = UITapGestureRecognizer(target: self, action: #selector(self.actionTapped(_:))) tempLabel?.isUserInteractionEnabled = true tempLabel?.addGestureRecognizer(tapAction) 

Приемник действий

 func actionTapped(_ sender: UITapGestureRecognizer) { // code here } 

Если вы хотите использовать многострочный текст в своей кнопке, создайте UILabel с многострочным текстом и добавьте в качестве подзаголовка к своей кнопке.

например:

 yourLabel=[Uilabel alloc]init]; yourLabel.frame=yourButtom.Frame;//(frame size should be equal to your button's frame) [yourButton addSubView:yourLabel] 

Чтобы добавить жестов Tap на UILable

 UITapGestureRecognizer *tapAction = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(lblClick:)]; tapAction.delegate =self; tapAction.numberOfTapsRequired = 1; //Enable the lable UserIntraction lblAction.userInteractionEnabled = YES; [lblAction addGestureRecognizer:tapAction]; 

и оценить селекторный метод

 - (void)lblClick:(UITapGestureRecognizer *)tapGesture { } 

Примечание: добавьте UIGestureRecognizerDelegate в файл .h

Свифт 3 от Элвина Джорджа

 override func viewDidLoad() { super.viewDidLoad() let newsString: NSMutableAttributedString = NSMutableAttributedString(string: "Tap here to read the latest Football News.") newsString.addAttributes([NSUnderlineStyleAttributeName: NSUnderlineStyle.styleDouble.rawValue], range: NSMakeRange(4, 4)) sampleLabel.attributedText = newsString.copy() as? NSAttributedString let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.tapResponse)) tapGesture.numberOfTapsRequired = 1 sampleLabel.isUserInteractionEnabled = true sampleLabel.addGestureRecognizer(tapGesture) } func tapResponse(recognizer: UITapGestureRecognizer) { print("tap") } 

Swift Версия: var tapGesture : UITapGestureRecognizer = UITapGestureRecognizer()

Затем внутри viewDidLoad() добавьте следующее:

  let yourLbl=UILabel(frame: CGRectMake(x,y,width,height)) as UILabel! yourLbl.text = "SignUp" tapGesture.numberOfTapsRequired = 1 yourLbl.addGestureRecognizer(tapGesture) yourLbl.userInteractionEnabled = true tapGesture.addTarget(self, action: "yourLblTapped:") 

Быстрая версия выглядит так:

 func addGestureRecognizerLabel(){ //Create a instance, in this case I used UITapGestureRecognizer, //in the docs you can see all kinds of gestures let gestureRecognizer = UITapGestureRecognizer() //Gesture configuration gestureRecognizer.numberOfTapsRequired = 1 gestureRecognizer.numberOfTouchesRequired = 1 /*Add the target (You can use UITapGestureRecognizer's init() for this) This method receives two arguments, a target(in this case is my ViewController) and the callback, or function that you want to invoke when the user tap it view)*/ gestureRecognizer.addTarget(self, action: "showDatePicker") //Add this gesture to your view, and "turn on" user interaction dateLabel.addGestureRecognizer(gestureRecognizer) dateLabel.userInteractionEnabled = true } //How you can see, this function is my "callback" func showDatePicker(){ //Your code here print("Hi, was clicked") } //To end just invoke to addGestureRecognizerLabel() when //your viewDidLoad() method is called override func viewDidLoad() { super.viewDidLoad() addGestureRecognizerLabel() } 
  • Autolayout: UILabel не изменяет размер с длинным текстом
  • Создавать привязанные «ссылки» в NSAttributedString UILabel?
  • Как реализовать пользовательские эллипсы в многострочном UILabel?
  • if с пустой UILabel
  • Как отображать текст в зависимости от количества в UILabel
  • мои первоначальные проблемы с UIScrollView теперь, похоже, связаны с автозапуском
  • Вертикально выровнять атрибутный текст в UILabel
  • Можно ли назначить действие доступности для UILabel?
  • UILabel - Альтернатива для устаревшего метода "adjustsLetterSpacingToFitWidth"
  • Добавление подпрограммы и ее программное программирование с ограничениями
  • iOS добавляет нижнюю границу в UILabel с тенью
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.