2012-06-26 1 views
8

В представлении есть UITextView, контроллер вида показывает модальный стиль. В моем методе viewDidLoad я устанавливаю текст этого UITextView, но текст не отображается. Изображение ниже показывает ошибку. Цвет текста черный.Текст в UITextView отображается неправильно, невидимым, но занятым пространством

Странная вещь, когда я долго вдавливаю в текстовое представление или нажимаю [return] на клавиатуре, текст становится видимым. Одна вещь, которую я заметил, это ошибка только произошло, когда текст, который я установил, длиннее ширины кадра UITextView, и последнее слово не разбито, например длинный URL-адрес.

Я думаю, что проблема Возможно, слово wrap не работает правильно.

Заранее спасибо.

enter image description here

код, как показано ниже:

UITextView *myTextView = [[UITextView alloc]initWithFrame:CGRectMake(10, 10, 520, 220)]; 
myTextView.textColor = [UIColor blackColor];  
myTextView.font = [UIFont systemFontOfSize:20]; 
myTextView.layer.cornerRadius = 5; 
myTextView.delegate = self; 
myTextView.text = @"long text should some like http://stackoverflow.com/posts/11200726/edit"; 

[self.view addSubview:myTextView]; 
[myTextView release]; 

RESOVLED. В методе viewDidLoad добавьте код:

CGRect tempFrame = myTextView.frame; 
[myTextView setFrame:CGRectZero]; 
[myTextView setFrame:tempFrame]; 
+0

Не могли бы вы показать нам код для UITextView? Благодарю. – pasawaya

+0

Я добавил код. Просто выделите/init, а затем установите, отпустите. Здесь нет других вещей. –

+0

Ваше исправление работает и для меня. У меня была такая же проблема даже с коротким текстом, поэтому я думаю, что проблема не связана с переносом слов. Вызов FYI [myTextView setNeedsDisplay] и/или [myTextView setNeedsLayout] не разрешает, но изменение фрейма делает. –

ответ

0

Вы уверены, что цвет текста черный? Также убедитесь, что изображение находится за текстовым элементом в иерархии представлений. TextView автоматически обрабатывает перенос слов.

+0

Да, это черное. Здесь нет изображения. –

0

Я думаю, что в этом случае viewDidLoad получает вызов до представления modelViewController.

  • Установить текст после представления modalViewController.
  • Если это также не работает, то после представления модели вызовите метод для явного указания текста.
+0

Я пробовал установить текст в viewDidAppear, не работая также. –

0

Проверьте свою иерархию взглядов. Возможно, вы добавили еще один textView над этим представлением.

0

Попробуйте изменить цвет фона textView. Должно появиться UITextView. И убедитесь, что вы не добавляете другое представление в качестве подзаголовка над вашим UITextView. Если textColor является черным, он должен быть видимым, wordwrap будет выполнен по умолчанию автоматически, если вы не измените свойство. Также попробуйте проверить настройки атрибутов в XIB, если они добавлены, и PLZ показать код, если добавить программно.

+0

Я добавил код. Просто выделите/init, а затем установите, отпустите. Здесь нет других вещей. –

0

Я думаю, что проблема в:

self.view 

Попробуйте добавить эту строку кода в верхней

self.view = [[[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds] autorelease]; 

А если не поможет, попробуйте удалить эту кодовую строку

myTextView.layer.cornerRadius = 5; 
5

Подкласс UITextView , в собственный класс, скажем, MyUITextView: UITextView.

Инициализировать его закадровый с

[[MyUITextView Alloc] initWithFrame: CGRectZero]

В MyUITextView переопределить метод

- (недействительными) willMoveToWindow: (UIWindow *) newWindow

и в нем, установите self.frame на правильное значение.

это сработало для меня!

+0

по той же проблеме? возможно, просто сбросьте фрейм, я попробую это. Благодарю. –

+1

Я просто сбросил фрейм в методе viewDidLoad. Не подклассы текста. И это работает! благодаря! –