UITextView и загадочное пропущенное пространство
У меня есть приложение с несколькими UITextView
различных размеров. Похоже, что если a UITextView
достаточно мало имеет font.pointSize достаточно высокий, то нет возможности добавить пробел после того, как текст будет достаточно большим, чтобы заполнить текстовое представление.
Например:
Я пытаюсь понять, что здесь происходит, я начинаю вводить свою обычную строку отладки, я набрал "Что", нажал клавишу пробела и не появилось места (но это обычно). Я набрал "the" , и похоже, что он был прикреплен прямо к концу предыдущего слова. Разумеется, не было места. Я мог бы вернуться и добавить пространство просто отлично, и как только я добавлю пробел, я могу добавить другие пробелы, когда будет завершена обработка слов.
Еще одно таинственное поведение заключается в том, что, когда вы дублируете косвенное пространство, оно не добавляет период до конца. Он заменяет последний символ периодом. Итак, "Что" + пространство + пространство становится "Wha".
Теперь, я делаю некоторые интересные вещи с размером шрифта, как я автоматически изменяю размер шрифта, чтобы текст заполнил пространство, предоставленное в разумных пределах, но когда я отключу это, я все еще могу воспроизвести поведение. Единственное отличие состоит в том, что вместо того, чтобы устанавливать на одну строку, слово переносится на следующую строку.
Например, если я набираю "What" + space + "the" , он выдает "Whatthe" с "What" в первой строке и "the" на втором (хотя я могу видеть только вершины ". Кроме того, здесь некоторая информация журнала из textViewDidChange:
.
Character textView.text.length
--------- --------------------
W 1
h 2
a 3
t 4
<space> 4
t 5
h 6
<space> 7 <---- Here a wierd one . . . now spaces all
? 8 work fine unless it resizing
Ответы
Ответ 1
Еще одно таинственное поведение: когда вы дублируете космос, это не добавляет период до конца. Он заменяет последнего символа период. Итак, "Что" + пространство + пространство становится "Wha".
Это не таинственно. Это означает, что ваш UITextView
использует автокоррекцию.
Fix:
UITextView *txtView; // your UITextView
[txtView setAutocorrectionType:UITextAutocorrectionTypeNo];
О пробелах... поскольку пробел не является отображаемым символом, ваш UITextView
не может измерять размер (ширина отличается с разным выравниванием), поэтому ваше свойство UITextView
contentSize
не будет изменяться и вести себя таинственно. Вы должны установить contentSize
вручную (вы можете легко рассчитать размер вашего NSString
с помощью метода sizeWithFont:
).