Странная вещь возникает при использовании sizetofit UITextView в IOS7

Когда я тестирую свое приложение на симуляторе IOS7. Иногда я обнаружил, что это странно, когда я использую sizeToFit из UITextView. Кадр после sizeToFit кажется правильным, но текст может отображаться только частично, как на фотографии ниже. (Серая область представляет собой UITextView новый кадр после sizeToFit, все предложение должно быть таким: «что вызвало напряженные отношения между ними».)

введите здесь описание изображения

Текст UITextView задается через attributeText. Кажется, проблема возникает только с некоторыми предложениями и подходит для большинства предложений.

Я встречал эту проблему несколько раз и не могу решить ее до сих пор. Любая помощь будет оценена. Спасибо.

Обновление:

Наконец я решаю проблему уродливым способом. Я сбрасываю текст textView.

NSString *text = textView.text;
textView.text = @"";
textView.text = text;

Теперь он может показывать весь контент после sizeToFit. Я думаю, что это похоже на ошибку IOS 7.


person echo    schedule 21.09.2013    source источник
comment
Увеличьте высоту рамки Textview.   -  person Romance    schedule 21.09.2013
comment
Я уже установил для backGroundColor UITextView серый цвет. (серая область на фотографии выше). Высота кадра Textview достаточна для отображения всего текста.   -  person echo    schedule 21.09.2013
comment
Может быть, [textView setNeedDisplay]?   -  person Kyle Fang    schedule 22.09.2013
comment
Кайлу Фангу, спасибо за ответ. Я попробовал setNeedDisplay, и это не сработало.   -  person echo    schedule 23.09.2013
comment
Вы нашли решение? У меня точно такая же проблема...   -  person CupraR_On_Rails    schedule 11.10.2013
comment
To CupraR_On_Rails: Наконец-то я решаю проблему безобразным способом. Я сбрасываю текст textView. NSString *текст = textView.text; textView.текст = @; textView.текст = текст; Я обновил свой оригинальный пост.   -  person echo    schedule 11.10.2013


Ответы (4)


У меня была та же проблема, мне потребовалось некоторое время, чтобы понять это, вам просто нужно изменить размер текстового контейнера

[textview sizeToFit];
[textview.textContainer setSize:textview.frame.size];
person Ahmed Hossny    schedule 26.12.2013
comment
Отличная находка, сэкономила мне много времени. - person zimmryan; 02.04.2014

Замечено, что в IOS7 sizeToFit также не работал - возможно, решение может помочь и вам, требуется дополнительный макетIfNeeded

[UITEXTVIEW sizeToFit];
[UITEXTVIEW layoutIfNeeded];
[UITEXTVIEW setTextContainerInset:UIEdgeInsetsMake(0, 0, 0, 0)];
person Nick Wood    schedule 25.09.2013
comment
В этом и заключалась разница перехода на новые линии, а не - СОХРАНЕНО! - спасибо и спасибо Apple за отступы / поля по умолчанию, на разработку которых ушло несколько дней :) - person Henry Heleine; 20.11.2020

Вы проверили «подвиды клипов» в конструкторе интерфейсов?

Попробуйте снять флажок или установить для этого свойства значение «НЕТ».

person Xavier Maroñas    schedule 24.09.2013
comment
Я создаю UITextView с помощью кодирования и не использую построитель интерфейса. Я также не могу найти свойство clipSubviews. Можете ли вы дать мне несколько советов? - person echo; 25.09.2013
comment
это можно сделать в коде, установив clipsToBounds = NO, но это не решает проблему. - person alexshafran; 11.10.2013

Попробуйте это, это сработало для меня.

[textView setTextContainerInset:UIEdgeInsetsMake(0, 0, 0, 0)];
person Karthik_S    schedule 20.02.2014