Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: JakubОтветов: 3

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

iphoneuser-interfaceinterface-builderios4

Ответы

Ответ 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.

Похожие материалы