У меня есть UILabel, и я хочу, чтобы он реагировал на прикосновение. Я попытался поместить кнопку поверх метки, благодаря этому я мог взаимодействовать с кнопкой. Однако кнопка не может быть полностью прозрачной, верно? Я мог бы установить альфу кнопки на 0,02, но она все еще видна на фоне. Как это решить? Может быть, я мог бы установить свойства каким-то другим способом, чтобы сделать их полностью невидимыми? Или есть какое-то другое решение?
Делаем UILabel сенсорным
Ответы (3)
Во-первых, почему бы просто не использовать кнопку и не установить заголовок кнопки в соответствии с содержимым метки?
Если вы не можете/не хотите этого делать, вы также можете установить userInteractionEnabled = YES на ярлыке, а затем добавить к ярлыку распознаватель жестов.
person
Ole Begemann
schedule
05.03.2011
см. комментарий Джоша Брауна ниже
- 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
UITapGestureRecognizer работает с UILabels — вам просто нужно установить userInteractionEnabled = YES для UILabel.
- person Josh Brown; 05.04.2011