尝试根据输入的文本以编程方式增加UITextView
的大小。问题是,textViewDidChange:
只有在输入后输入新行字符时才能识别新行字符。例如,我正在尝试输入以下内容:
嗨,我的名字是吉米。
如果我在 NSLog 中打印它,这就是我会得到的textViewDidChange:
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
的比例,明智的做法是从中删除任何自动调整大小的蒙版。
6和iOS 7上都对我有用。请记住,NSLog 有时不会像您期望的那样在日志末尾显示新行,因此请尝试在 textView.text
之后记录其他内容,例如:
- (void)textViewDidChange:(UITextView *)textView
{
NSLog(@"TextView text changed to: "%@"", textView.text);
}
如果它真的不记录新行,那么它听起来确实像是您应该报告的错误。