14

我有一个应用程序,其中包含一些UITextView不同大小的 s。看来,如果UITextView足够小的 font.pointSize 足够高,那么在文本足够大以填充文本视图之后,就无法添加空格。

例如:

我试图弄清楚这里发生了什么,我开始输入我通常的调试字符串,我输入“什么”按空格键并且没有出现空格(但这很常见)。我输入了“the”,看起来它就被贴在了前一个单词的末尾。果然,没有空位。我可以回去添加空格,一旦我添加了空格,我可以添加其他空格作为自动换行然后变得有效。

另一个神秘的行为是,当你双击空格时,它不会在末尾添加句点。它用句点替换最后一个字符。所以,“什么”+空格+空格就变成了“什么”。

现在,我正在用字体大小做一些有趣的事情,比如我正在自动调整字体大小,以便文本填充在合理范围内提供的空间,但是当我禁用它时,我仍然可以重现该行为。唯一的区别是,单词不是放在一行上,而是换行到下一行。

例如,如果我输入“What”+空格+“the”,它会出现“Whatthe”,第一行是“What”,第二行是“the”(尽管我只能看到“the”的顶部。此外,这里有一些来自textViewDidChange:.

Character    textView.text.length
---------    --------------------
W            1
h            2
a            3
t            4
<space>      4
t            5
h            6
<space>      7    <----  Here's a wierd one . . . now spaces all
?            8           work fine unless it's resizing
4

1 回答 1

1

另一个神秘的行为是,当你双击空格时,它不会在末尾添加句点。它用句点替换最后一个字符。所以,“什么”+空格+空格就变成了“什么”。

这并不神秘。这意味着您UITextView使用自动更正。使固定:

UITextView *txtView; // your UITextView
[txtView setAutocorrectionType:UITextAutocorrectionTypeNo];

关于空格...由于空格不是可绘制的符号,因此您UITextView无法测量大小(宽度因对齐方式不同而不同),因此您UITextViewcontentSize属性不会改变并且表现得很神秘。你应该contentSize 手动设置(你可以很容易地计算你NSStringsizeWithFont:方法的大小)。

于 2013-04-28T23:06:19.640 回答