/ / iOS - UITextView не малює текст? - iphone, object-c, ios, uiview, uitextview

iOS - UITextView не малює текст? - iphone, object-c, ios, uiview, uitextview

У мене на екрані є UITextView. Цей UITextView охоплюється UIView.

Коли я встановлюю текст для цього UITextView, якщо textView не видно (UIView покриває його), він не малює текст.

Отже, коли я видаляю подання, яке охоплює мій textView, у моєму textView немає тексту. Якщо я спробую прокрутити перегляд тексту, текст з’явиться раптово.

будь-який спосіб змусити UITextView весь час малювати текст? (Це трапляється лише тоді, коли в мені занадто багато тексту (близько 1000 символів))

Я намагався зателефонувати [textView setNeedsDisplay], до та після встановлення "текст", і це не "вирішило проблему"

Відповіді:

1 для відповіді № 1

Більшість речей у системі не відображатимуться в прихованому вигляді, що було б марною тратою ресурсів.

Правильним підходом є виклик setNeedsDisplay: на UITextView ПІСЛЯ його було не приховано, тоді він повинен намалювати негайно.


4 для відповіді № 2

У мене така сама проблема, у мого UITextView немаємалювати текст, доки я не спробую прокрутити його або його батьків. [textView setNeedsDisplay] у мене не працює. Нарешті, я збільшую textView 1px, і проблема зникла.

CGRect frame = textView.frame;
frame.size.height += 1;
textView.frame = frame;

Я знаю, що цей метод потворний, але він працює.


0 для відповіді № 3

Обмеження кількості символів у UITextView здається приблизно відносно низьким (дивіться пост тут)

Плакат за посиланням, яке я розмістив, пропонує розмістити ваш вміст у UIWebView, який може обробляти велику кількість тексту.


0 для відповіді № 4

Та сама проблема. У нас є текстовий перегляд, який налаштовується та розміщується у поданні, прихований або поза екраном. Швидше за все через оптимізацію Apple UITextView так що він не робить макет і креслення, якщо це не на екрані та не видно.

Дзвінок setNeedsDisplay не працює через оптимізації. setNeedsDisplay телефонує досить часто, тому уявіть a UITextView робити макет і малювати досить часто? Таким чином, наведене вище рішення є потворним, але працює: додайте піксель до кадру, який ініціюватиме UITextView перекласти та перемалювати. Ми пішли з цим рішенням.


0 для відповіді № 5

Оскільки UITextView є підкласом UIScrollView, я зробив щось подібне:

CGPoint offset = self.textView.contentOffset;
offset.y++;
[self.textView setContentOffset:offset];
offset.y--;
[self.textView setContentOffset:offset];

те саме, що @ Tùng Đỗ, не змінюючи кадру ... все одно виглядає потворно.