ios - UITextView 和神秘的缺失空间

标签 ios iphone objective-c uitextview uiapplicationdelegate

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

例如:

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

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

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

例如,如果我输入“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

最佳答案

Another mysterious behavior is that when you double tap space, it doesn't add a period to the end. It replaces the last character with a period. So, "What" + space + space becomes "Wha."

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

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

关于空格...因为空格不是可绘制的符号,您的 UITextView 无法测量大小(宽度因不同的alignment 而异),所以您的UITextViewcontentSize 属性不会被改变并且行为神秘。您应该设置 contentSize 手动(您可以使用 sizeWithFont: 方法轻松计算您的 NSString 的大小)。

关于ios - UITextView 和神秘的缺失空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14720720/

相关文章:

ios - MKMapView 位置不会更新

ios - 在滚动 UITableView 上调用 Web 服务

iphone - 将 UIViews subview 展平为 UIImage iPhone 3.0

ios - 如何取消选择选定的 UITableView 单元格?

ios - swift 错误 : Value of type 'NSObject -> () ' AnimalListTableViewController' has no member 'tableView'

ios - 将自定义单元格内的 View 居中

iphone - iPhone 应用程序的声音格式

objective-c - NSPopover 颜色

ios - UINavigationController popViewControllerAnimated 在 Touch Id 之后需要很长时间

ios - 将 UIImage 转换为 cv::Mat