在我使用这种方法之前......
//TextView is a UITextView
[TextView scrollRangeToVisible:NSMakeRange([TextView length], 0)];
...它将以编程方式滚动到UITextView的末尾,但它似乎不适用于iOS 4.0。有没有办法以编程方式滚动到UITextView的末尾而不改变editablility或插入一个点(用户可以点击UITextView并显示键盘)?
另外,我是否需要将文件所有者指定为委托?它有所作为吗?
答案 0 :(得分:37)
UITextView没有length属性。 以下代码适用于我的环境。
[TextView scrollRangeToVisible:NSMakeRange([TextView.text length], 0)];
答案 1 :(得分:6)
答案对我不起作用,但遵循用于TableView的工作完美无缺。只需确保您的UITextView名为textView。
if (textView.contentSize.height > textView.frame.size.height)
{
CGPoint offset = CGPointMake(0, textView.contentSize.height - textView.frame.size.height);
[self.textView setContentOffset:offset animated:YES];
}
答案 2 :(得分:4)
在IOS8中,对ensureLayoutForTextContainer的调用似乎使这个解决方案工作了......我花了将近一个小时来跟踪它。
logObject.layoutManager.ensureLayoutForTextContainer(logObject.textContainer)
logObject.setContentOffset(CGPointMake(0.0, logObject.contentSize.height), animated:false)
答案 3 :(得分:1)
这对我有用:
[_myTextView.layoutManager ensureLayoutForTextContainer:_myTextView.textContainer];
[_myTextView scrollRangeToVisible:NSMakeRange([_myTextView.text length], 0)];
答案 4 :(得分:0)
这是我使用它的工作正常。 shouldScrollTextToBottom 由调用视图设置(调用堆栈中较低的1个视图控制器)
(void)viewDidAppear:(BOOL)animated
{ // scroll to bottom if required
if(shouldScrollTextToBottom)
[txtMyTextView scrollRectToVisible:CGRectMake(0, 0, txtMyTextView.frame.size.width, txtMyTextView.frame.size.height * 6) animated:YES];
}
6是一个任意大的数字,它应该是UITextView高度的倍数。我发现值为5时,我的视图不会滚动到绝对底部。