2012-01-13 3 views
5

Я хотел бы реализовать расширенные текстовые представления, как показано в Instagram. Ниже приведен снимок экрана.Богатый текстовый вид, такой как Instagram Comment

В частности, мои цели:

  1. слов на разных позициях одного и того же текста зрения могут иметь различные размеры шрифта, цвет шрифта и начертания шрифта (жирный, курсив и т.д.).
  2. Сенсорные события (длительное нажатие, касание вниз и т. Д.) Могут быть обнаружены в обратных вызовах делегата. Информация (какое слово затронуто, будь то длинное нажатие или касание вниз и т. Д.) Можно собрать в таких методах обратного вызова.

Большие рамки, такие как Three20, не могут быть и речи. Небольшие, независимые библиотеки очень предпочтительны. Низкоуровневые API-интерфейсы Cocoa Touch также могут быть в порядке, если для их завершения не потребуется более нескольких дней.

Любые предложения приветствуются.

enter image description here

ответ

2

Наконец нашел идеальное решение с открытым исходным кодом (поддерживает как IOS, 5.0 и IOS 6): OHAttributedLabel, который способен как богатый формат и сенсорной обработки.

https://github.com/AliSoftware/OHAttributedLabel

+0

В iOS6 UILabel и NSAttributedString делают это тоже. – Fogmeister

+0

OHAttributedLabel поддерживает iOS 5;) –

3

NSAttributedString позволяет сделать это. Если у вас есть доступ к кулинарной книге разработчиков iOS 5 от Erica Sadun, есть рецепт для обертки вокруг NSMutableAttributedString, который упрощает добавление текста по частям, меняя атрибуты по мере продвижения.

Here является источником на githuib Эрики

+0

редактировать: это не делает сенсорную обработку, только дисплей. если вы хотите это, возможно, может быть лучше UIWebview с разными типами ссылок и css для стилизации? – wattson12

+0

Спасибо @ wattson12. Я часто использовал ** href ** вещь в своих веб-представлениях. Я заметил, что они могут обнаружить только один вид сенсорного события, ** сенсорный внутри **. Но то, что Instagram способен делать, - это ** длительное нажатие ** и ** касание вниз **. –

+0

Я не знал, что о href's. Я не слишком уверен в этом, но вы можете использовать javascript для обнаружения долгого нажатия внутри webview? как [это] (http://stackoverflow.com/questions/6038613/get-the-duration-of-a-touch-in-javascript)? – wattson12

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