UITableViewCell con el texto seleccionable / copiable que también detecta las direcciones URL en el iPhone

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

Pregunta

Tengo un problema. Parte de mi aplicación requiere texto que se mostrará en una tabla. Las necesidades Texto a / copiable seleccionable (pero no editable) y las direcciones URL dentro de la necesidad de texto para ser resaltados y cuando se le golpea y me permiten tomar eso URL y abrir mi navegador integrado.

he visto un par de soluciones que resuelvan uno de cualquiera de estos problemas, pero no ambos.

Solución 1: Icono de fábrica IFTweetLabel

La primera solución que probé fue utilizar la clase IFTweetLabel posible gracias Icono de fábrica y se utiliza en Twitterrific.

Si bien esta solución permite enlaces (o cualquier cosa que puede encontrar con una expresión regular) para ser detectados para ser manejado en una base de caso por caso, que no permite seleccionar y copiar.

También hay un problema por el que si una URL es el tiempo suficiente para ser envuelto, el botón que las superposiciones de clase por encima de la URL para que sea interactivo no puede envolver y dibuja fuera de la pantalla, de aspecto muy extraño.

Solución 2: Uso IFTweetLabel y mango copiar manualmente

La segunda cosa que probé era mantener IFTweetLabel en el lugar para manejar los enlaces, sino para poner en práctica la copia usando un gesto largo del grifo, por ejemplo, cómo las aplicaciones de SMS maneja. Esto fue sólo de trabajo, pero no permite la selección arbitraria de texto, se copia todo el texto, o ninguno se copia en todos los ... bastante blanco y negro.

Solución 3: UITextView

Mi tercer intento fue añadir un UITextView como una vista secundaria de la celda de la tabla.

Lo único que esto no resuelve es el hecho de que las direcciones URL detectados no pueden ser manejados por mí. Método UIApplication la vista Texto usos de openURL: la que se cierra mi aplicación y lanzó Safari.

Además, como la vista de tabla puede llegar a ser muy grande, el número de UITextViews añadidos como subvistas causar un lastre notable en el rendimiento en el desplazamiento a lo largo de la mesa, sobre todo en los dispositivos de la era del iPhone 3G (a causa de la creación, diseño, composición cada vez que una célula se desplaza en la pantalla, etc).

Así que mi pregunta para todos ustedes popular informado por ahí es: ¿Qué puedo hacer yo

¿Un UIWebView ser la mejor opción? Aparte de un lastre para el rendimiento, creo que un WebView resolvería todos los problemas anteriores, y si no recuerdo mal, vistas web de vuelta en los 2,0 días, la documentación de Apple en realidad recomendada Cuando el formateo / se requerían hipervínculos de texto.

Puede alguien pensar en una manera de lograr esto sin un lastre para el rendimiento?

Muchas gracias de antemano a todos los que pueden ayudar.

¿Fue útil?

Solución

Tan pronto como me golpeó el botón de enviar, una nueva idea me golpeó.

Yo estaba tan preocupado por tener URL en línea con texto e interactivo que yo no consideraba que tal vez no es la mejor solución.

Estoy seguro de que para lograr ese tipo de comportamiento, un UIWebView es la mejor opción, independientemente de los problemas de rendimiento.

Sin embargo, tal vez una mejor experiencia de usuario / interacción es no destacar las URL en línea, pero para reunirlos en una matriz detrás de las escenas, y presentar un botón de divulgación como accesorio de vista de la célula?

A continuación, para la selección y copiar texto, tan sólo pudiera utilizar el UITextView con detectores de datos apagado y no se preocupe por los vínculos que tuvo que salir a Safari y el cierre de mi aplicación.

Cuando se pulsa el botón de la divulgación, el usuario podría ser transportado fuera a la URL encontrado en el texto, o si se encuentra más de un URL, presentar al usuario una vista selector para elegir que para ir a.

Cualquier pensamiento / críticas a esta idea son bienvenidos.

Otros consejos

Se puede evitar que un campo de texto que se modifique el sobreescribiendo los métodos UITextField Delegado de tal manera que no se aplican ninguna de las modificaciones. Eso deja el campo seleccionable y copiable pero impide la alteración.

Una mejor pregunta es: ¿realmente tiene que mostrar la URL real sí mismo? Se puede conseguir lejos con sólo un nombre página / ubicación, a sólo el prefijo server.host.domain o alguna otra representación condensada de la url? No creo que nadie cuál es tratar de leer una URL larga en la pantalla de un móvil restringido.

Si es necesario para mostrar toda la url entonces creo que una vista de detalle es el camino a seguir.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top