У меня есть UILabel, и я хочу, чтобы он реагировал на прикосновение. Я попытался поместить кнопку поверх метки, благодаря этому я мог взаимодействовать с кнопкой. Однако кнопка не может быть полностью прозрачной, верно? Я мог бы установить альфу кнопки на 0,02, но она все еще видна на фоне. Как это решить? Может быть, я мог бы установить свойства каким-то другим способом, чтобы сделать их полностью невидимыми? Или есть какое-то другое решение?
Вопрос
Делаем UILabel сенсорным
Ответы
Ответ 1 · рейтинг 50 · Ole Begemann
Во-первых, почему бы просто не использовать кнопку и не установить заголовок кнопки в соответствии с содержимым метки?
Если вы не можете/не хотите этого делать, вы также можете установить userInteractionEnabled = YES на ярлыке, а затем добавить к ярлыку распознаватель жестов.
Ответ 2 · рейтинг 8 · vkalit
В Свифте:
label.userInteractionEnabled = true
let gestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("labelPressed"))
label.addGestureRecognizer(gestureRecognizer)
Получите ваш клик в действии:
func labelPressed(){
print("Label pressed")
//Your awesome code.
}
Ответ 3 · рейтинг 7 · Jensen2k
Я обычно делаю так:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(pushAction)];
[myLabel addGestureRecognizer:tap];
Я не знаю, работает ли это с метками, но тогда я просто делаю прозрачный UIView с тем же прямоугольником и помещаю его сверху.
Хорошо, я проверил, это работает только в UIView, но тогда сделайте это:
UIView *tapView = [[UIView alloc] initWithFrame:myButton.frame];
И поместите "tapView" в метод addGestureRecognizer.
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.