Обработка сенсорного события в UILABEL и подключать его к Ibaction

StackOverflow https://stackoverflow.com/questions/3169798

Вопрос

Хорошо, так у меня есть UILabel Создано в Interface Builder, который отображает какой-то текст по умолчанию «Нажмите, чтобы начать».

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

Так что в любом случае, я думаю, мой вопрос, я собираюсь придеться подкласс UILabel Чтобы сделать это на работу? Или есть какой-то способ, которым я могу перетащить кнопку на этикетку, но сделать его 0% непрозрачным. Или есть прощественное решение, которое мне не хватает?

Это было полезно?

Решение

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

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

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

Другие советы

Уилабель наследует от UIView, который наследует от UIRESPONDER. Все объекты UIRESPONDER могут обрабатывать сенсорные события. Таким образом, в вашем классе файл, который знает о вашем представлении (который содержит UILabel) Alludher:

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

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

UITouch *touch = [touches anyObject];

if(touch.view.tag == MY_TAG_VAL)
label.text = @"new text";

Вы подключаете свой код в своем файле классов с объектом UILABEL в Interface Builder, объявив вашу переменную экземпляра UILabel с префиксом IBOUTLET:

IBOutlet UILabel *label;

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

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

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
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top