UITextView не отображается, пока не прокрутится - PullRequest
11 голосов
/ 12 октября 2011

Я использую UITextView для отображения текста из xml. Я проанализировал xml и сохранил текст в NSArray, и оттуда я добавляю его в UITextview в своем коде.

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

Я добавил UITextview к UIView.

Я нашел это странным и погуглил его, но не смог найти много ответов, которые мне помогают. Может кто-нибудь ответить мне, чтобы решить проблему

TNQ

Ответы [ 8 ]

10 голосов
/ 05 января 2013

Нашел простое решение

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

У меня был UITextView вне экрана и анимировал его так:

    [UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationCurveEaseOut animations:^{
    self.contentView.center = CGPointMake(self.contentView.center.x + move * (self.contentView.frame.size.width /2), self.contentView.center.y);
    self.textView.frame = self.textView.frame; // <<<--- ADD THIS LINE
    } completion:^(BOOL finished) {
    if (finished) {
    }
}];

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

Приветствия

5 голосов
/ 30 января 2013

UITextView наследуется от UIScrollView, поэтому просто прокрутите его.

[detailsTextView setContentOffset:CGPointMake(0, 1) animated:YES];
1 голос
/ 21 октября 2011

Я решил проблему, очистив текстовое представление и снова добавив текст в текстовое представление, я не знаю точных основ, но моя проблема решена.в моем случае: я изменяю рамку текстового представления снаружи на вид при нажатии кнопки. пока кнопка нажата, текстовое представление не показывает содержимое, и при прокрутке оно показывает.

я решил,удаление текста из текстового представления и повторный ввод текста при нажатии кнопки.

0 голосов
/ 08 января 2013

Когда вы завершаете операцию, которая анализирует XML, вы гарантируете, что ваше обновление происходит в главном потоке?

UIKit обновляет только основной поток, поэтому любые сделанные из него обновления будут отображаться только при следующем касании объекта и принудительном обновлении.

В качестве примера одного способа сделать это правильно.

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{

   [self parseXMLOffMainThread];

   dispatch_async(dispatch_get_main_queue(), ^{

      self.myTextView.text = parsedText;

      });        

 });
0 голосов
/ 08 января 2013

Пожалуйста, попробуйте, когда ваш textView загружается

NSAttributedString *oldtext = objTextView.attributedText;
[objTextView removeFromSuperview];
objTextView.attributedText = oldtext;
[self.view addSubview:objTextView];

В моем случае мой текст приписывается

0 голосов
/ 12 октября 2011

Есть вероятность того, что пробелы и / или переводы строки находятся перед фактическим текстом.Обрежьте эти символы перед тем, как назначить их для просмотра текста.

NSCharacterSet *charset = [NSCharacterSet whitespaceAndNewlineCharacterSet];
NSString *text = [parsedString stringByTrimmingCharactersInSet:charset];
textview.text = text;
0 голосов
/ 12 октября 2011

Убедитесь, что метод, в котором вы устанавливаете текстовое представление, вызывается правильно. И строка, которую вы назначаете текстовому представлению, имеет правильный формат строки (если это не так, сохраните его).

0 голосов
/ 12 октября 2011

UItextView наследуется от UIScrollView. Это означает, что он имеет функцию прокрутки. Таким образом, если содержимое UITextView достаточно мало, чтобы поместиться в его рамку, прокрутка не требуется.

Но, если он достаточно большой, вам нужно прокрутить UITextView.

Имеет ли это смысл?

Для получения дополнительной информации см. Ссылку на класс UITextView

...