UITextView自动向下滚动

And*_*obs 30 cocoa-touch

我有一个UIView,我添加了一个可编辑的UITextView,

UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(5, 5, 219, 47)];
[self addSubview:textView];
textView.font = [UIFont systemFontOfSize:14];
Run Code Online (Sandbox Code Playgroud)

当我键入它不会自动下降.有人有个主意吗?

Mar*_*man 52

只是想通了你必须使用长度> 0

NSRange range = NSMakeRange(textView.text.length - 1, 1);
[textView scrollRangeToVisible:range];
Run Code Online (Sandbox Code Playgroud)

无论如何,为我工作.


Fra*_*sch 11

要滚动到我试过的缓冲区的末尾

[textView scrollRangeToVisible:NSMakeRange([textView.text length]-1, 1)];
Run Code Online (Sandbox Code Playgroud)

但什么都没发生.相反,这有效

textView.selectedRange = NSMakeRange(textView.text.length - 1, 0);
Run Code Online (Sandbox Code Playgroud)


Can*_*der 7

我想你必须这样做

[textView scrollRangeToVisible:[textView selectedRange]];
Run Code Online (Sandbox Code Playgroud)

textDidChange.


Pet*_*son 5

以编程方式向文本框添加文本时,我发现我还需要添加“[textView layoutIfNeeded]”以在正确计算新滚动位置之前进行设置。

例如:

[newString appendFormat:@"%@\n",addText];
textView.text = newString;
[textView layoutIfNeeded];
NSRange range = NSMakeRange(textView.text.length - 2, 1); //I ignore the final carriage return, to avoid a blank line at the bottom
[textView scrollRangeToVisible:range]
Run Code Online (Sandbox Code Playgroud)

如果没有这个添加,文本框有时不会滚动,或者每次添加一行数据时都会滚动几行。


And*_*obs 0

如果找到解决方案

我将textview放入视图并将视图设置为clipToBounds = YES然后我将textView的高度设置为70

这解决了问题。

非常奇怪的解决方案,但它终于起作用了:)