2012-01-13 15 views
5

Me gustaría implementar vistas de texto enriquecido tal como se muestran en Instagram. Lo que sigue es una captura de pantalla.Vista de texto enriquecido como Instagram Comentario

Específicamente, mis objetivos son:

  1. palabras en diferentes posiciones de la misma vista de texto pueden tener diferentes tamaños de fuente, colores de fuente y estilos de fuente (negrita, cursiva, etc.).
  2. Los eventos táctiles (pulsación larga, toque abajo, etc.) se pueden detectar en las devoluciones de llamada de delegado. La información (qué palabra se toca, si es una pulsación larga o un toque hacia abajo, etc.) se puede recopilar en dichos métodos de devolución de llamada.

Grandes marcos como Three20 están fuera de la cuestión. Las bibliotecas pequeñas e independientes son muy preferidas. Las API Cocoa Touch de bajo nivel también pueden estar bien si no me toma más de unos pocos días terminarlas.

Cualquier sugerencia es muy apreciada.

enter image description here

Respuesta

2

encontrado finalmente una solución de código abierto ideales (soporta tanto iOS 5.0 y iOS 6): la OHAttributedLabel, que es capaz tanto de formato y el tacto rico manipulación.

https://github.com/AliSoftware/OHAttributedLabel

+0

En iOS6, UILabel y NSAttributedString también lo hacen. – Fogmeister

+0

OHAttributedLabel es compatible con iOS 5;) –

3

NSAttributedString le permite hacer esto. Si tiene acceso al libro de cocina de desarrolladores de iOS 5 de Erica Sadun, hay una receta para un envoltorio alrededor de NSMutableAttributedString que hace que sea sencillo agregar texto pieza por pieza, cambiando los atributos sobre la marcha.

Here es la fuente en githuib de Erica

+0

editar: esto no hace la manipulación táctil, sólo la pantalla. Si también lo desea, ¿podría ser mejor una UIWebview con diferentes tipos de enlaces y un CSS para diseñar cada uno? – wattson12

+0

Gracias @ wattson12. Usé mucho el ** href ** mucho en mis vistas web. Noté que solo pueden detectar un tipo de evento táctil, el ** retoque dentro **. Pero lo que Instagram es capaz de hacer es ** presionar prolongadamente ** y ** tocar hacia abajo **. –

+0

No sabía eso sobre href's. No estoy muy seguro de esto, pero ¿podrías usar javascript para detectar una pulsación larga dentro de la vista web? como [esto] (http://stackoverflow.com/questions/6038613/get-the-duration-of-a-touch-in-javascript)? – wattson12

Cuestiones relacionadas