2010-02-04 21 views
5

usando Iphone SDK 3.1.2palabra Prevenir la envoltura con UITextView

que tiene un control UITextView con desplazamiento vertical y horizontal habilitado. Quiero que cada línea de texto se muestre sin envoltura para que el usuario pueda desplazarse horizontalmente para verla. El problema que tengo es que, incluso con desplazamiento horizontal habilitado, el texto se ajusta al ancho de la pantalla del iphone, es decir, 3.20 píxeles.

¿Cómo puedo evitar envolver?

Gracias

Respuesta

1

creo que está pegado con poner un UITextField en un ScrollView.

5

Use sizeWithFont: de las adiciones de NSString UIKit para obtener el ancho de cada línea, luego configure la propiedad contentSize de su UITextView para que sea ligeramente más ancha que el ancho de la línea más larga.

Tuve un problema al intentar esta estrategia, que surge al asignar una cadena a una propiedad de texto de UITextView. En la asignación, UITextView configurará su contentSize.width para que coincida con el ancho de la vista e insertará nuevas líneas en la cadena de texto asignada para ajustarla a ese ancho. Puede establecer contentSize.width a la longitud de su línea más larga después de asignar uitextview.text, y esto le da espacio adicional en la vista de desplazamiento, pero las nuevas líneas evitan que el texto ocupe el nuevo espacio.

Si configura contentsize.width antes de cargar su texto en la vista, contentSize simplemente se restablece cuando carga el texto.

Intenté aumentar el tamaño del marco de la vista de texto antes de cargarlo, esto funciona para permitir que las líneas largas pasen el borde de la pantalla. Sin embargo, no puede desplazarse, y en el momento en que reduce el tamaño del marco, se produce nuevamente el cambio de la línea nueva de su texto y el reajuste de contentSize. Lo mismo ocurre si se ingresa texto en la vista.

Bueno, estoy convencido de que uitextviews simplemente no son aptos o no para el desplazamiento horizontal en este punto. No veo cómo la incrustación de una vista de texto dentro de otra vista de desplazamiento podría aliviar esto tampoco. Solo tiene que hacerlo en HTML ...

3

La solución es desactivar todas las opciones de desplazamiento en el UITextView y luego incrustarlo en otro UIScrollView. Puede obtener el código real buscando en este término "DualScrollTextView" en google.

0

Woot lo tengo.

Establecí el ancho de UITextView en 500 en .xib. En mi código, configuré el myUITextView.text = @ "una cadena enorme con muchas líneas";

Luego configuro myUITextView.contentSize = CGSizeMake (600, myUITextView.contentSize.height);

Por supuesto, puede usar cualquier ancho que desee; solo asegúrate de que este último sea más grande.

3

Tuve problemas similares. Aquí está mi solución con diseño automático.

  1. Coloque su UITextView en un scrollView. Pegue los bordes de la vista de texto para desplazarse por los bordes de la vista.

  2. Utilice dos IBOutlet para el ancho y alto de UITextView. Yo los llamo "heightConstraint" y "widthConstraint"

  3. Utilice el siguiente código en su controlador de vista:

    - (void)viewWillLayoutSubviews { 
        CGSize fit = [self.textView sizeThatFits:CGSizeMake(10000, 10000)]; 
        self.widthConstraint.constant = fit.width; 
        self.heightConstraint.constant = fit.height; 
    } 
    

que descubra que sólo puede pedir UITextView para calcular el tamaño que se ajusta, en lugar de calcular la longitud de cada línea usted mismo