У мене на екрані є 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 Đỗ, не змінюючи кадру ... все одно виглядає потворно.