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:).