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

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

Короче говоря, я хочу, чтобы пользователь нажал на 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() } 
  • как я могу выровнять текст моего ярлыка быстрым, чтобы он начинался в верхнем левом углу метки?
  • UILabel курсивный шрифт
  • измерьте amout adjustsFontSizeToFitWidth для UILabel или textField
  • Как визуализировать растянутый текст в iOS?
  • Ограничения AutoLayout для UITableViewCell contentView не соблюдаются
  • Как нарисовать круг в UILabel?
  • iOS: CGRect конкретного текста в строке UILabel
  • UILabel: цвет, зависящий от фона
  • Xcode - Swift - расширение ширины UILabel для текста
  • Верхний выравнивающий текст разных размеров в пределах UILabel
  • sizewithattributes не возвращает правильный размер
  • Interesting Posts

    Неожиданная авария KVO

    Как вы инкапсулируете представление MonoTouch.Dialog в контроллер представления?

    Как вызвать кнопку отмены в UISearchBar?

    Форматирование NSPredicate: соответствие «ANY», которое соответствует двум условиям

    didReceiveRemoteNotification отображает пользователя в правильном виде

    Пакет динамического поведения UIKit с приложением, не поддерживающим поведение при столкновении?

    UICollectionView не подчиняется zIndex UICollectionViewLayoutAttributes

    Передача событий на другое представление

    Как я могу вычислить общее количество слов и символов в textView?

    GoogleMaps на симуляторе в Xcode 9 использует более 100% CPU при перемещении карты

    Ошибка «Автомакет по-прежнему требуется» при добавлении subview в UITableView только на iOS 7

    Список локальных уведомлений iOS после того, как уведомление было выпущено

    Изменить позицию UITableViewCellEditingStyle

    UIStackView перед iOS 9.0 в Xcode 7 beta 5

    WKWebView в интерфейсе Builder

    Давайте будем гением компьютера.