Компонент для текста смешивания, ссылки и кликабельный текст

StackOverflow https://stackoverflow.com/questions/4028145

Вопрос

У меня проблема. Нужен компонент для смешивания текста, ссылок и кликабельный текст.

В приложении Facebook можно увидеть пример.http://img193.imageshack.us/img193/1355/example1t.jpg.

Кто-то знает, чем может сделать это. Например, UIrextView может обнаруживать ссылки в тексте, но не может вставить кликабельный текст.

Спасибо за вашу помощь.

Это было полезно?

Решение

Я использовал Coretext для этой цели.

Вычисление смещенных кран было немного сложно, поскольку я продолжал забывать перевернуть систему координат, но в конечном итоге я получил его, и вот краткий обзор того, как вы можете сделать это:

  1. Создайте свой текст как NSMutableAttributedString (Так как вам придется изменять его в какой-то момент).
  2. Сканируйте его для текста, который вы хотите добавить ссылку, вставьте два атрибута: 1) цвет текста, который является например, синий; и 2) пользовательский атрибут ссылки (назовите его все, что вам нравится, сделайте его значение, чтобы быть ссылкой, которую вы хотите перейти))
  3. Оказывать текст в вашем drawRect:. Отказ Вам нужно будет создать CTFramesetterRef и а CTFrameRef (Последнее вы захотите сохранить. Также обратите внимание, что создание Framesetter - это дорогой процесс, сделайте это только один раз (т.е. вне фонаря :), если это возможно).
  4. В вашем коде обращения с сенсорным обслуживанием, как я упоминал ранее, вам нужно компенсировать различные системы координат. Оттуда, предполагая, что вы знаете, где ваш текст использует свою систему координат, вы можете выяснить, где в тексте отображается кран, который затем можно перехватить в своем сенсорном обработке, если атрибут по определенному CTRunRef Содержит ваш пользовательский атрибут ссылки. Если это так, просто получите атрибут и пропустите его на что-то - как правило, именно здесь вы захотите использовать делегат.

Это суть этого.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top