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

Я пытаюсь отобразить некоторый текст в своем приложении, где в тексте может быть какой-то URL-адрес. Я хочу, чтобы URL-адрес был выделен как гиперссылка и доступен для кликов. Кроме того, при нажатии я хочу предоставить обратный вызов, где я могу выполнить пользовательское действие. Конечно, URL-адрес должен быть передан обратно в мой обратный вызов, чтобы я знал, что с ним делать (скажем, открыть его в браузере в приложении и т. д.).

Это может показаться сложным, но в основном все приложения для обмена мгновенными сообщениями в магазине приложений (их более 30) имеют эту функцию, когда пользователь может отправить мгновенное сообщение, содержащее URL-адрес, а принимающая сторона может щелкнуть по нему и открыть страницу во встроенном в приложение браузере. .

Как это делается? Я просто не могу понять это. Если у вас есть решение, предоставьте пример кода. Спасибо.


Кстати:

Ответ: НЕ UIWebView (потому что рендеринг нескольких его экземпляров очень медленный).

Ответ также НЕ UITextView, потому что, хотя он способен анализировать URL-адрес, он не может установить пользовательский обратный вызов для кликов. Так что это просто заканчивается открытием сафари.

Ответ также НЕ TTStyledTextLabel, потому что, хотя он способен анализировать URL-адрес и назначать ему настраиваемое действие, он должен быть предварительно назначен в URLMap. И, очевидно, в этом случае мы заранее не знаем, что такое URL. Насколько я знаю, вы не можете назначить ВСЕ URL-адрес пользовательскому действию.

замещающий текст http://img169.yfrog.com/img169/3373/picture1ufx.png< /а>


person erotsppa    schedule 26.07.2009    source источник


Ответы (2)


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

Я дал вам указания в вашем другом вопросе SO, так что я немного озадачен тем, почему вы не прочитали источник, на который я дал ссылку, потому что он ответил на этот точный вопрос. TTURLMap поддерживает универсальные методы с помощью метода "-from:toViewController:selector". Например:

[map from:@"*" toViewController:[ViewController class]
        selector:@selector(someHandler:)];

Я бы понял путаницу, если бы вы имели дело с полной недокументированной библиотекой, но библиотека Three20 очень хорошо документирована, включая примеры приложений, которые делают именно то, что вам нужно.

person Nathan de Vries    schedule 27.07.2009

Это может показаться сложным, но в основном все приложения для обмена мгновенными сообщениями в магазине приложений (их более 30) имеют эту функцию, когда пользователь может отправить мгновенное сообщение, содержащее URL-адрес, а принимающая сторона может щелкнуть по нему и открыть страницу во встроенном в приложение браузере. .

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

Вам, вероятно, придется написать код самостоятельно, например. рендеринг текста и обнаружение ссылок или изменить TTStyledTextLabel (что в любом случае выглядит хорошим началом). Я делаю что-то подобное и просто создаю UIButtons поверх любых ссылок. Код обнаружения ссылок можно найти в исходниках Adium.

person mjhoy    schedule 26.07.2009