2011-07-22 8 views
9

Estoy creando una aplicación que crea un UITextView mediante programación. El problema es que cuando el usuario ingresa texto o la aplicación establece el texto, las palabras se propagan a través de una línea y fuera de la pantalla, en lugar de ajustarse a la siguiente línea. Cuando creo un UITextView con el constructor de interfaz, el texto se ajusta automáticamente, pero no cuando se crea programáticamente.¿Cómo crear un UITextView que automáticamente envuelve las líneas de texto?

Código:

UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(100, 12, 210, 60)]; 
[[self view] addSubview:textView]; 
[textView becomeFirstResponder]; 
+0

TextViews añaden automáticamente el ajuste de texto: http: Son //developer.apple.com/library/ios/#documentation/uikit/reference/uitextview_class/Reference/UITextView.html ¿Estás seguro de que no te refieres a textFields? – chandhooguy

Respuesta

2

UITextView y UITextField son diferentes clases. UITextField es línea única y UITextView es multilínea. Cree un UITextView en lugar de un UITextField programáticamente y usted ha resuelto su problema que esperaba.

+6

Está bastante claro en su código que está creando una instancia de 'UITextView'. – PengOne

+1

La primera línea de su respuesta es "Estoy creando una aplicación que crea un' UITextField' programáticamente ", de ahí mi respuesta. – mxcl

+0

Noté que editó su respuesta. Doy probabilidades 2-1 de que era solo un error en su código y que estaba usando UITextField en lugar de UITextView, lo he visto hecho tres o cuatro veces, es un error fácil de hacer y se ajusta a la evidencia provista. Además, notablemente, UITextField no tiene un horizontalScrollBar que explica el bloqueo anterior cuando intentó deshabilitarlo. Por lo menos, debes deshacer el menos uno que diste mi respuesta: P – mxcl

0

El punto entero de UITextView es permitir múltiples líneas de texto. A partir de la documentación:

La clase UITextView implementa el comportamiento de una región de texto desplazable, multilínea. La clase admite la visualización de texto utilizando una fuente, color y alineación personalizados y también admite la edición de texto. Usted suele utilizar una vista de texto para mostrar varias líneas de texto, como al mostrar el cuerpo de un documento de texto grande.

Desde UITextView hereda de UIScrollView, que pueden ser capaces de obligarlo a cooperar mediante la desactivación del desplazamiento horizontal. Para hacer esto, desea configurar contentSize, p. Ej.

CGSize scrollableSize = CGSizeMake(210, 480); 
[textView setContentSize:scrollableSize]; 

Esto solucionará el ancho a 210 y permitir que la altura para desplazarse a 480. Dado que está configurando textView en el tamaño (210,60), esto debería permitir el desplazamiento vertical, pero no el desplazamiento horizontal.

+0

Ese podría ser el problema, pero no es en mi caso. Incluso cuando la vista de texto tiene el tamaño de toda la pantalla, con espacio para muchas líneas, el texto no se ajusta automáticamente. ¿Alguna otra idea? – Greg

+0

@Greg: Solo busqué un poco, y encontré 3 publicaciones, entre el 9 de junio y el 11 de enero, que hacen esta pregunta y no obtienen una resolución. – PengOne

+0

Eso es preocupante, siento que este es un problema muy simple. Muchas aplicaciones utilizan UITextViews con texto envolvente, y no se pueden haber creado con IFB. – Greg

2

Disponible desde iOS 7:

textView.textContainer.lineBreakMode = NSLineBreakByWordWrapping; 
Cuestiones relacionadas