Обработка события Touch в UILabel и подключение его к IBAction

Итак, у меня есть UILabel созданный в построителе интерфейса, который отображает некоторый текст по умолчанию «нажмите, чтобы начать».

Когда пользователь UILabel я хочу, чтобы он UILabel метод IBAction: -(IBAction)next; который обновляет текст на ярлыке, чтобы сказать что-то новое.
Было бы очень удобно, если бы это позволило мне просто перетащить соединение из моего метода на мой ярлык, а затем выбрать подправить внутри, как с помощью кнопки. но, увы, нет сигары.

так или иначе, я думаю, мой вопрос: мне придется подclassифицировать UILabel чтобы заставить это работать? Или можно каким-то образом перетащить кнопку над меткой, но сделать ее непрозрачной. Или есть более простое решение, которое мне не хватает?

Проверьте это:

 UILabel *label = ... label.userInteractionEnabled = YES; UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTap)]; [label addGestureRecognizer:tapGesture]; 

Хитрость заключается в том, чтобы включить взаимодействие с пользователем.

UILabel наследует UIView, который наследуется от UIResponder. Все объекты UIresponder могут обрабатывать события касания. Поэтому в вашем файле classа, который знает о вашем представлении (который содержит UIlabel), реализует:

 -(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event; 

В построителе интерфейса задайте значение тега UILabel. когда прикосновения происходят в вашем методе touchhesBegan, проверьте значение тега представления, к которому принадлежит тег:

 UITouch *touch = [touches anyObject]; if(touch.view.tag == MY_TAG_VAL) label.text = @"new text"; 

Вы связываете свой код в файле classа с объектом UILabel в построителе интерфейса, объявляя переменную экземпляра UILabel префиксом IBOutlet:

 IBOutlet UILabel *label; 

Затем в построителе интерфейса вы можете подключить их.

Вы можете использовать UIButton, сделать его прозрачным, то есть нестандартным, без изображения, и добавить к нему UILabel (в центре). Затем подключите обычные события кнопок.

Swift 3

У вас есть IBOutlet

 @IBOutlet var label: UILabel! 

В котором вы включаете взаимодействие с пользователем и добавляете распознаватель жестов

 label.isUserInteractionEnabled = true let tapGesture = UITapGestureRecognizer(target: self, action: #selector(userDidTapLabel(tapGestureRecognizer:))) label.addGestureRecognizer(tapGesture) 

И, наконец, обработайте кран

 func userDidTapLabel(tapGestureRecognizer: UITapGestureRecognizer) { // Your code goes here } 
  • Xcode - обновить текст метки ViewController с другого вида
  • Как нарисовать границу вокруг UILabel?
  • Почему UINavigationBar крадет события касания?
  • Форматирование номера для отображения запятых и / или знака доллара
  • Метод sizeWithFont устарел. boundingRectWithSize возвращает неожиданное значение
  • UINavigationBar многострочное название
  • UILabel и NSLinkAttributeName: ссылка не доступна для кликов
  • Как создать привязанную строку с помощью Swift?
  • Как управлять расстоянием между строками в UILabel
  • Как получить текст из n-й строки UILabel?
  • Как создать изображение из UILabel?
  • Давайте будем гением компьютера.