UITextView textViewDidChange:无法识别换行符

时间:2013-09-20 14:07:06

标签: ios objective-c uitextview ios7

尝试以编程方式增加UITextView的大小,具体取决于输入的文本。问题是,textViewDidChange:只会在输入后输入内容时识别新行字符。例如,我正在尝试输入以下内容:

嗨,我的名字是吉米。

如果我在textViewDidChange:

中的NSLog中打印这个,我就会得到这个
Log: H
Log: Hi
Log: Hi,
Log: Hi, m
Log: Hi, my
Log: Hi, my (here goes the new line, but it's not recognized)
Log: Hi, my
 n (it's recognized on this line, only after something is inputted after it).

如果我尝试输入两个换行符,则只有在输入第二个换行符后才能识别第一个换行符。这是某种错误还是我错过了什么,有没有办法解决这个问题?这曾经在iOS 6上正常工作。

编辑 - 为了更清楚地澄清问题,我得到通知说文本已被更改,问题是新文本是一个空字符而不是新行。

编辑 - 目前看来,找到UITextView的拟合大小的唯一正确方法是使用其sizeThatFits:方法,同时传递边界大小。此外,如果您以编程方式更改UITextView的比例,最好从中删除任何自动调整大小的掩码。

1 个答案:

答案 0 :(得分:3)

在iOS 6和iOS 7上都适合我。请记住,NSLog有时不会像您期望的那样在日志末尾显示新行,因此请尝试在textView.text之后记录其他内容,例如:

- (void)textViewDidChange:(UITextView *)textView
{
    NSLog(@"TextView text changed to: \"%@\"", textView.text);
}

如果它确实没有记录新行,那么它听起来像一个你应该report的bug。