Как создать встроенные якоря текста в приложении для iOS - PullRequest
0 голосов
/ 17 мая 2019

У меня есть простое приложение для iOS, которое динамически загружает контент со стилем HTML в UITextView.

Это прекрасно работает, так как NSAttributedString обрабатывает все теги HTML, которые мне нужно поддерживать, за исключением одного случая, который относится к встроенным якорям текста. Он отлично обрабатывает внешние ссылки, но, кажется, не распознает и не переходит к текстовым привязкам при нажатии.

Например, если я добавлю в представление следующий HTML-код (преобразованный в NSAttributedString):

<p><a href="#anchor1">Lorem ipsum</a> dolor sit amet, consectetur adipiscing elit. Fusce dapibus, ante et varius imperdiet, est risus tincidunt ex, non fermentum enim eros quis metus. Quisque vehicula lacus at ornare ullamcorper. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer scelerisque lectus quis libero rutrum, quis condimentum dolor porta.</p>

[lots more text]

<p><a name="anchor1">Sed</a> eros purus, lobortis a rhoncus id, facilisis ac orci. In hac habitasse platea dictumst. In sagittis in orci vitae volutpat. Quisque sollicitudin lectus at est ultrices, et volutpat diam lobortis.</p>

Нажатие на ссылку Lorem ipsum ничего не делает в этом случае, но если я изменю ее href на какой-то внешний URL-адрес, то это срабатывает, как и ожидалось, поэтому проблема, по-видимому, связана только с внутренними ссылками.

Итак, мне интересно, возможно ли вообще использовать стиль HTML с именем anchors внутри UITextView? Если нет, есть ли простые альтернативы?

Я использую Swift, поэтому ответ на этом языке (если необходимо кодирование) предпочтительнее.

1 Ответ

0 голосов
/ 17 мая 2019

Я не знаю ни одного решения на основе HTML - только для JS.

Но есть кое-что подобное, что я сделал в одном, если мои приложения, за исключением того, что я не прокручивал до определенного раздела textview.Существует делегат UITextView, который дает вам указатель, по которому был нажат URL-адрес.

Вы можете использовать это для получения URL-адреса.Следующая проблема - получить смещение прокрутки этого тега привязки во всем тексте.На мой взгляд, один из способов получить эту информацию - найти текст для тега привязки, а затем использовать метод NSString, например this , чтобы получить высоту, необходимую для строки.Используйте это как смещение прокрутки.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...