iOS - UITextView не рисует текст? - PullRequest
       29

iOS - UITextView не рисует текст?

3 голосов
/ 17 августа 2011

У меня есть UITextView на экране. Этот UITextView покрывается UIView.

Когда я устанавливаю текст для этого UITextView, если textView не виден (UIView закрывает его), он не рисует текст.

Таким образом, когда я удаляю представление, которое покрывает мой textView, в моем textView нет текста. Если я попытаюсь прокрутить текстовое представление, текст появится внезапно.

есть ли способ заставить UITextView рисовать текст всегда? (Это происходит только тогда, когда у меня слишком много текста (около 1000 символов))

Я пытался позвонить [textView setNeedsDisplay], до и после установки 'text', и это не решило проблему

Ответы [ 5 ]

4 голосов
/ 02 января 2012

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

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

Я знаю, что этот метод уродлив, но он работает.

1 голос
/ 17 августа 2011

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

Правильный подход - вызвать setNeedsDisplay: в UITextView ПОСЛЕ того, как он был скрыт, то он долженНарисуй сразу.

0 голосов
/ 26 марта 2013

Поскольку UITextView является подклассом UIScrollView, я сделал что-то вроде этого:

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

так же, как @ Tùng Đỗ без изменения фрейма ... все еще выглядит безобразно.

0 голосов
/ 04 сентября 2012

Та же проблема. У нас есть текстовое представление, которое настроено и помещено в представление, скрытое или за кадром. Скорее всего, из-за того, что Apple оптимизирует UITextView, чтобы он не делал компоновку и рисование, если он не отображается на экране и не виден.

Вызов setNeedsDisplay не работает из-за оптимизации. setNeedsDisplay вызывается довольно часто, поэтому представьте, UITextView делает макет и рисование довольно часто? Таким образом, решение выше уродливо, но работает: добавьте пиксель к кадру, который заставит UITextView изменить расположение и перерисовать. Мы пошли с этим решением.

0 голосов
/ 17 августа 2011

Ограничение на количество символов в UITextView кажется относительно низким ( см. Сообщение здесь ).

Постер в ссылке, которую я разместил, предлагает поместить вашсодержимое в UIWebView, которое может обрабатывать большое количество текста.

...