2016-08-03 5 views
-2

В некоторых обстоятельствах я должен сделать интерактивный UILabel. Я пробовал много ответов от stackOverflow, чтобы сделать UIlabelClickable, но они не работали.Swift: UIButton на UILabel

Итак, в конце концов, я решил разместить UIButton на UILabel и сделать кнопку прозрачной.

Однако, хотя кнопка правильно расположена над этикеткой, нажатие кнопки не взаимодействует. Есть идеи?

Благодаря

Edit: Кроме того, есть две точки зрения, говорят view1 и view2. Из-за структуры моего приложения я разместил UIButton и UILabel на представлении 2, а затем разместил view 2 на view1. Итак:

view2.addSubview(button) 
view1.addSubview(view2) 
+0

Почему вы не удаляете UILabel полностью и не используете UIButton? UIButton - это в основном интерактивный UILabel. –

+0

Причина в том, что для UILabel выполняется несколько функций, поэтому я не могу перейти на UIButton. – hikki

+0

Почему вы не можете просто запускать эти функции на UIButton? –

ответ

0

Вид с непрозрачностью нуля не tappable. Дайте кнопке очень маленькую непрозрачность, но не совсем нулевую. Он не будет виден, но теперь он будет отображаемым.

В качестве альтернативы используйте обычную кнопку без заголовка и цвет фона, чья альфа близка к нулю, но не совсем нулевая. Опять же, это не будет видно, но оно будет отображаемым.

0

Если вам нужна UILabel для кликабеля, вам необходимо удалить ярлык и использовать UIButton и изменить имя кнопки на то, что когда-либо было указано вашим лейблом. Это будет выглядеть как ярлык, но будет доступно.

Надеюсь, это поможет!

1

Вы должны быть в состоянии установить для пользователя UILabel userInteractionEnabled значение true, поскольку UILabel наследует это свойство из суперкласса UIView.

Я забыл упомянуть, что вам нужно будет использовать распознаватель жестов с меткой, поскольку UILabel не наследует UIControl так, как это было в начале.

Сказав это, вы можете просто добавить распознаватель жестов к вашему UILabel.

+0

По-видимому, моя кнопка была вне контроля, и именно поэтому она не работала. Извините за то, что вы задали немой вопрос и благодарите вас за помощь – hikki

0

Фактически a UIButton имеет на нем titleLabel. Так что хорошо использовать UIButton, если вы хотите щелкнуть мышью UILabel.

0

Сначала я отвечу на ваш вопрос. Есть 2 возможности

1) UILabel может быть на вершине UIButton, поэтому вам нужно взять UIButton на UILabel.

2) Возможно, вы сделали цвет UIButton для очистки цвета, который делает Alpha равным 0.0f. Это делает кнопку un-clickable. Поэтому вам нужно изменить настройки цвета. И сделайте Alpha до 1.0

Лучший способ использовать UIButton только и не использовать UIButton и UILabel. ИЛИ только UILabel с свойством userInteractionEnabled.

Смежные вопросы