2012-06-26 6 views
8

C'è una UITextView nella vista, il controller della vista viene visualizzato con lo stile Modale. Nel mio metodo viewDidLoad, ho impostato il testo di questo UITextView, ma il testo non viene mostrato. L'immagine sotto mostra l'errore. Il colore del testo è nero.Il testo in UITextView non visualizza correttamente, gli spazi invisibili ma occupati

La cosa strana è che quando tocco a lungo la visualizzazione del testo o tocchi [invio] in tastiera, il testo diventa visibile. Una cosa che ho notato è che questo errore solo si è verificato quando il testo che ho impostato è più lungo della larghezza del frame di UITextView e l'ultima parola non è rotta come un lungo URL.

Credo che il problema è forse la parola va a capo funziona correttamente.

Grazie in anticipo.

enter image description here

Codice come di seguito:

UITextView *myTextView = [[UITextView alloc]initWithFrame:CGRectMake(10, 10, 520, 220)]; 
myTextView.textColor = [UIColor blackColor];  
myTextView.font = [UIFont systemFontOfSize:20]; 
myTextView.layer.cornerRadius = 5; 
myTextView.delegate = self; 
myTextView.text = @"long text should some like http://stackoverflow.com/posts/11200726/edit"; 

[self.view addSubview:myTextView]; 
[myTextView release]; 

RESOVLED. Nel metodo viewDidLoad, aggiungere il codice qui sotto:

CGRect tempFrame = myTextView.frame; 
[myTextView setFrame:CGRectZero]; 
[myTextView setFrame:tempFrame]; 
+0

Puoi mostrarci il codice per UITextView? Grazie. – pasawaya

+0

Ho aggiunto il codice. Basta allocare/init e quindi impostare, rilasciare. Non ci sono altre cose qui. –

+0

La correzione funziona anche per me. Ho avuto lo stesso problema anche con un breve testo, quindi penso che il problema non sia legato al word wrapping. FYI chiamando [myTextView setNeedsDisplay] e/o [myTextView setNeedsLayout] non si risolve ma cambia il frame. –

risposta

0

Sei sicuro il colore del testo è nero? Assicurati inoltre che l'immagine sia dietro la visualizzazione del testo nella gerarchia della vista. TextView gestisce automaticamente il ritorno a capo automatico.

+0

Sì, è nero. Nessuna immagine qui. –

0

Penso che in questo caso, viewDidLoad viene chiamato prima che venga presentato modelViewController.

  • Impostare il testo dopo la presentazione di modalViewController.
  • Se anche questo non funziona, dopo aver presentato il modello, chiamare un metodo per impostare il testo in modo esplicito.
+0

Ho provato a impostare il testo in viewDidAppear, non funziona anche. –

0

Controlla la gerarchia di visualizzazione. Potresti aver aggiunto un altro textView sopra quella vista.

0

Provare a cambiare il colore di sfondo di textView. Deve apparire è UITextView è aggiunto lì. E assicurati di non aggiungere un'altra vista come sottoview sopra UITextView. Se textColor è nero, deve essere visibile, il wordwrap viene eseguito automaticamente per impostazione predefinita a meno che non venga modificata la proprietà. Inoltre, provare a controllare le impostazioni degli attributi in XIB se aggiunto e plz mostrare il codice se si aggiunge a livello di codice.

+0

Ho aggiunto il codice. Basta allocare/init e quindi impostare, rilasciare. Non ci sono altre cose qui. –

0

penso problema:

self.view 

Prova aggiungere questa riga di codice in alto

self.view = [[[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds] autorelease]; 

E se non aiuta, provare a rimuovere questa riga di codice

myTextView.layer.cornerRadius = 5; 
5

sottoclasse UITextView , per una tua classe, diciamo MyUITextView: UITextView.

inizializzare offscreen con

[[MyUITextView alloc] initWithFrame: CGRectZero]

In MyUITextView sovrascrivere il metodo

- (vuoto) willMoveToWindow: (UIWindow *) newWindow

e in essa, imposta self.frame sul valore corretto.

questo ha funzionato per me!

+0

per lo stesso problema? forse, resetta il frame, ci proverò. Grazie. –

+1

Ho appena ripristinato il frame nel metodo viewDidLoad. Non sottoclasse la visualizzazione del testo. E funziona! Grazie! –

Problemi correlati