UITextView和神秘的遗失空间

D. *_*ick 14 iphone objective-c uitextview uiapplicationdelegate ios

我有一个应用程序与少量UITextView各种大小的s.看起来如果一个UITextView足够小的font.pointSize足够高,那么在文本足够大以填充文本视图之后就无法添加空格.

例如:

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

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

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

例如,如果我输入"What"+ space +"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
Run Code Online (Sandbox Code Playgroud)

Den*_*kov 1

另一个神秘的行为是,当您双击空格时,它不会在末尾添加句点。它将最后一个字符替换为句点。因此,“What”+空格+空格就变成了“Wha”。

这并不神秘。这意味着您UITextView使用auto Correction。使固定:

UITextView *txtView; // your UITextView
[txtView setAutocorrectionType:UITextAutocorrectionTypeNo];
Run Code Online (Sandbox Code Playgroud)

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