С вашей строки:
simpleTextLabel.attributedText = text.htmlToAttributedString
Мы можем предположить, что simpleTextLabel
- это UILabel
.
Это базовое поведение от UILabel
- не быть "интерактивным".Вы можете добавить к нему жест касания, но он преобразуется в UIButton
.
Существуют некоторые приемы, позволяющие сделать это с помощью UILabel
, найти, где именно он был нажат, проверить, есть лиэто ссылка и т. д. Ищем «UILabel Clickable»: Создать «ссылки» с возможностью нажатия в NSAttributedString UILabel? и т. д. Есть даже несколько сторонних библиотек.
Я (по моему скромному мнению) считаю это "взломом".
Есть хорошая Сессия WWDC 2018: TextKit Best Practices ,В 2:34 это объясняет, что если вам нужно взаимодействовать с отображаемым текстом, предпочитает UITextView
вместо UILabel
.
Для этого есть метод UITextViewDelegate
: textView(_:shouldInteractWith:in:interaction:)
Обратите внимание, что есть небольшие различия в рендеринге UITextView
и UILabel
.Если вы наложите их, они не будут иметь одинаковую «начальную точку», макет будет немного другим.Однако с небольшими изменениями он может быть таким же (например: Как сделать текст макета UITextView таким же, как UILabel? ).
Обратите внимание, что в соответствии с маленькимИзменяя UITextView
в UILabel
визуальном рендеринге, пользователь не заметит разницы (и это действительно важно, кроме того, что использование нативных методов UITextView
/ UITextViewDelegate
делает его легко понятным впоследствиидругой разработчик, или через несколько месяцев, если вам нужно сделать небольшую модификацию).