Ho un UITextView sullo schermo. Questo UITextView è coperto da un UIView.
Quando imposto il testo per questo UITextView, se textView non è visibile (UIView lo copre), non disegna il testo.
Quindi quando rimuovo la vista che copre il mio textView non c'è testo nel mio textView. Se provo a scorrere la visualizzazione del testo, il testo apparirà all'improvviso.
un modo per forzare l'UITextView a disegnare il testo in ogni momento? (Questo succede solo quando ho troppo testo (circa 1000 caratteri))
Ho provato a chiamare [textView setNeedsDisplay]
, prima e dopo aver impostato "testo" e non ha risolto il problema
risposte:
1 per risposta № 1La maggior parte delle cose nel sistema non verranno visualizzate se nascoste, il che sarebbe uno spreco di risorse.
L'approccio corretto è chiamare setNeedsDisplay: su UITextView DOPO che è stato nascosto, quindi dovrebbe disegnare immediatamente.
4 per risposta № 2
Ho lo stesso problema, il mio UITextView nodisegna il testo fino a quando provo a farlo scorrere o al suo genitore. [textView setNeedsDisplay] non funziona per me. Infine, aumento textView 1px e il problema è sparito.
CGRect frame = textView.frame;
frame.size.height += 1;
textView.frame = frame;
So che questo metodo è brutto ma funziona.
0 per risposta № 3
Il limite al numero di caratteri in a UITextView
sembra essere relativamente basso (vedi il post qui).
Il poster nel link che ho pubblicato suggerisce di inserire i tuoi contenuti in a UIWebView
, che può gestire una grande quantità di testo.
0 per risposta № 4
Stesso problema. Abbiamo una visualizzazione di testo che è configurata e messa in vista mentre è nascosta o fuori schermo. Molto probabilmente a causa dell'ottimizzazione di Apple UITextView
in modo che non esegua layout e disegni a meno che non sia sullo schermo e visibile.
chiamata setNeedsDisplay
non funziona a causa delle ottimizzazioni. setNeedsDisplay
viene chiamato abbastanza spesso, quindi immagina a UITextView
fare layout e disegni abbastanza spesso? Quindi la soluzione sopra è brutta ma funziona: aggiungi un pixel al frame che attiverà il UITextView
per ridimensionare e ridisegnare. Siamo andati con questa soluzione.
0 per risposta № 5
Poiché UITextView è una sottoclasse di UIScrollView, ho fatto qualcosa del genere:
CGPoint offset = self.textView.contentOffset;
offset.y++;
[self.textView setContentOffset:offset];
offset.y--;
[self.textView setContentOffset:offset];
lo stesso di @ Tùng Đỗ senza cambiare la cornice ... sembra ancora brutto.