2

尝试UITextView根据输入的文本以编程方式增加其大小。问题是,textViewDidChange:如果我在输入它们后输入一些东西,只会识别换行符。例如,我正在尝试输入以下内容:

嗨,我\n 的名字是吉米。

如果我在 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以编程方式更改 's 比例,最好从中删除任何自动调整大小的蒙版。

4

1 回答 1

3

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

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

如果它真的没有记录新行,那么它听起来确实像一个你应该报告的错误。

于 2013-09-20T14:21:30.870 回答