iOS4:无法以编程方式滚动到UITextView的底部

时间:2010-07-03 13:02:14

标签: iphone uiscrollview uitextview ios4 uitextviewdelegate

在我使用这种方法之前......

//TextView is a UITextView 

[TextView scrollRangeToVisible:NSMakeRange([TextView length], 0)];

...它将以编程方式滚动到UITextView的末尾,但它似乎不适用于iOS 4.0。有没有办法以编程方式滚动到UITextView的末尾而不改变editablility或插入一个点(用户可以点击UITextView并显示键盘)?

另外,我是否需要将文件所有者指定为委托?它有所作为吗?

5 个答案:

答案 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时,我的视图不会滚动到绝对底部。