2013-09-20 2 views
2

Попытка увеличить размер UITextView программно в зависимости от того, какой текст был введен в него. Проблема в том, что textViewDidChange: распознает только новые символы строки, если я введу что-то после их ввода. Например, я пытаюсь ввести следующее:UITextView textViewDidChange: не распознает символ новой строки

Привет, мое имя - Джимми.

Это то, что я получу, если я печатаю это в NSLog в textViewDidChange:

Log: H 
Log: Hi 
Log: Hi, 
Log: Hi, m 
Log: Hi, my 
Log: Hi, my (here goes the new line, but it's not recognized) 
Log: Hi, my 
n (it's recognized on this line, only after something is inputted after it). 

Если я пытаюсь ввести два перевода строки, только первый из них будет признан и только после ввода ввода второй один. Является ли это своего рода ошибкой или я что-то упускаю, есть ли способ исправить это? Это использовалось для правильной работы на iOS 6.

EDIT - Чтобы уточнить проблему немного, я получаю уведомление о том, что текст был изменен, проблема заключается в том, что новый текст представляет собой пустой символ вместо новой строки ,

EDIT - Похоже, что в настоящее время единственным подходящим способом найти размер подгонки для UITextView является использование его метода sizeThatFits:, передавая ему ограничивающий размер. Кроме того, если вы программно изменяете пропорции UITextView, было бы разумно удалить из него любые маски с авторезистированием.

ответ

3

работает для меня на обоих прошивкой 6 и IOS 7. Имейте в виду, что NSLog иногда не показывают новые строки в конце журнала, как можно было бы ожидать, так что пытаться что-то еще войти после textView.text, например:

- (void)textViewDidChange:(UITextView *)textView 
{ 
    NSLog(@"TextView text changed to: \"%@\"", textView.text); 
} 

Если он действительно не регистрирует новые строки, это звучит как ошибка, которая должна быть report.

+0

Проклятье! Правда, проблема связана с методом 'boundingRectWithSize: options: attributes: context:'. – Eugene

+0

Да, просто попробовал это сам, этот метод не вернет увеличенный фрейм, если его строка пуста. Не уверен, что это ошибка или функция, но не может помешать сообщить об этом в качестве ошибки. –

Смежные вопросы