Делаем UILabel сенсорным

У меня есть UILabel, и я хочу, чтобы он реагировал на прикосновение. Я попытался поместить кнопку поверх метки, благодаря этому я мог взаимодействовать с кнопкой. Однако кнопка не может быть полностью прозрачной, верно? Я мог бы установить альфу кнопки на 0,02, но она все еще видна на фоне. Как это решить? Может быть, я мог бы установить свойства каким-то другим способом, чтобы сделать их полностью невидимыми? Или есть какое-то другое решение?


person Jakub    schedule 05.03.2011    source источник


Ответы (3)


Во-первых, почему бы просто не использовать кнопку и не установить заголовок кнопки в соответствии с содержимым метки?

Если вы не можете/не хотите этого делать, вы также можете установить userInteractionEnabled = YES на ярлыке, а затем добавить к ярлыку распознаватель жестов.

person Ole Begemann    schedule 05.03.2011
comment
см. комментарий Джоша Брауна ниже - person cynistersix; 11.05.2012

В Свифте:

label.userInteractionEnabled = true
let gestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("labelPressed"))
label.addGestureRecognizer(gestureRecognizer)

Получите ваш клик в действии:

func labelPressed(){
    print("Label pressed")
    //Your awesome code.
}
person vkalit    schedule 21.08.2015

Я обычно делаю так:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(pushAction)];
[myLabel addGestureRecognizer:tap];

Я не знаю, работает ли это с метками, но тогда я просто делаю прозрачный UIView с тем же прямоугольником и помещаю его сверху.


Хорошо, я проверил, это работает только в UIView, но тогда сделайте это:

UIView *tapView = [[UIView alloc] initWithFrame:myButton.frame];

И поместите «tapView» в метод addGestureRecognizer.

person Jensen2k    schedule 05.03.2011
comment
UITapGestureRecognizer работает с UILabels — вам просто нужно установить userInteractionEnabled = YES для UILabel. - person Josh Brown; 05.04.2011