2010-03-01 34 views
8

Estoy teniendo un momento terrible tratando de obtener un cuadro de entrada como el de la aplicación de SMS.Cuadro de entrada de texto como la aplicación de SMS en el iPhone

¿Alguien puede ofrecer alguna orientación sobre cómo construir uno de estos y hacer que se vea bien? Necesito un cuadro de entrada que tenga una forma muy parecida al UITextfield, pero que se estirará verticalmente al escribir.

Supongo que necesito calcular el ancho del texto y estirar el marco de la imagen superpuesta verticalmente cuando la palabra de texto se ajusta. Lo más cercano que he llegado se estira, pero el cursor rebota por todos lados cuando se acerca a los límites.

ACTUALIZACIÓN:

He trabajado en esto todos los días durante una semana y tengo acerca renunciado a la UITextView. Puedo hacer que se estire correctamente, pero cuando retrocede, la altura del texto se reduce demasiado cuando se sube una línea. A medida que continúo retrocediendo, se corrige solo. Por ejemplo, muestra este comportamiento cuando estoy en la línea 4 y retrocede hasta la línea 3. Luego, cuando continúo retrocediendo, se corrige hasta que llego al final de la línea 2. Luego se corrige a sí mismo, ... etc.

Decidí tratar de subclase UITextField pero ni siquiera puedo mostrarlo en el tamaño de fotograma que especifico. 150,150,150,150.

+0

¿Echa un vistazo a TTTextEditor from Three20? (ver mi respuesta a continuación). –

Respuesta

2

Three20 proyecto tiene un control que debería hacer esto por usted.

Desde el README Three20:

TTTextEditor es una UITextView que puede crecer en altura de forma automática a medida que tipo. Lo uso para ingresar mensajes en Facebook Chat, y se comporta como de forma similar al editor en la aplicación SMS de Apple.

+0

Finalmente decidí seguir esta ruta. – Bobby

+0

¡Genial, háganos saber cómo funciona! –

1

Usted puede hacer esto usted mismo. Afortunadamente, el UITextFieldcan notify you whenever its text changes, y afortunadamente NSString tiene métodos (bajo las Adiciones de UIKit) que le permiten get the height of the string given a certain width, y afortunadamente you can resize a UITextField yourself.

+0

Pensé que el UITextField no admitía múltiples líneas. He intentado hacer que esto funcione con una UITextView, pero no sé cómo darle un aspecto "enmarcado" (redondeado ovalado) como lo hace la aplicación SMS. – Bobby

+0

@Bobby GAH! tienes razón, me olvidé totalmente de eso; gracias por recordarme. :) En ese caso, tendrá que dibujar el borde alrededor de 'UITextView' usted mismo. –

+3

Para darle la superposición ovalada redondeada, agregue un 'UIImageView' en la parte superior. A continuación, establezca su propiedad de imagen en un 'UIImage' creado con el método' stretchableImageWithLeftCapWidth: topCapHeight: '(consulte los documentos para obtener más información al respecto). –

0

Sé que esto es viejo, pero para las personas que todavía miran esta respuesta ahora hay un buen control de Slack que hace que se llame SlackTextViewController.

+0

¿conoce un ejemplo de demostración de SlackTextViewController? –

+0

@jayrparro usted tiene uno en el repositorio https://github.com/slackhq/SlackTextViewController/tree/master/Examples/Messenger –

+0

Gracias. simplemente actualiza hace 2 días. –

Cuestiones relacionadas