UITextView和神秘的遗失空间

时间:2013-02-06 02:42:02

标签: ios iphone objective-c uitextview uiapplicationdelegate

我有一个应用程序,其中包含少量UITextView个不同大小的应用程序。似乎如果UITextView足够小,font.pointSize足够高,则在文本足够大以填充文本视图后,无法添加空格。

例如:

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

另一个神秘的行为是,当您双击空间时,它不会添加句点到最后。它用句点替换最后一个字符。所以,“什么”+空间+空间变成“什么”。

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

例如,如果我输入“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's a wierd one . . . now spaces all
?            8           work fine unless it's resizing

1 个答案:

答案 0 :(得分:1)

  

另一个神秘的行为是当你双击太空时,它   没有添加句号到最后。它用a替换最后一个字符   期。所以,“什么”+空间+空间变成“什么”。

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

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

关于空格......由于空格不是可绘制的符号,因此UITextView无法衡量的是尺寸(宽度因对齐而不同而不同),因此您的UITextView contentSize财产不会改变,行为神秘。您应手动设置contentSize (您可以使用NSString方法轻松计算sizeWithFont:的尺寸。