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

15

之前我使用的是这种方法...

//TextView is a UITextView 

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

有一种方法可以编程滚动UITextView到结尾,但它在iOS 4.0中似乎无法正常工作。是否有一种方法可以在不改变可编辑性或插入点(用户可以点击UITextView并显示键盘)的情况下编程滚动到UITextView的结尾?

此外,我需要将文件所有者指定为委托吗?这会有所不同吗?


“不工作”是什么意思?它是否可以滚动?键盘是否被调用? - TechZen
当使用[TextView scrollRangeToVisible:NSMakeRange([TextView.text length], 0)]时,它根本不滚动,但它不会改变textview的.editable(这对我来说很好)。演示此功能的示例项目位于http://dl.dropbox.com/u/8256776/Bugsy.zip,其中包含一个带有UITextView和两个按钮的ViewController模板。当按下一个按钮时,它会将“\nFive”添加到UITextView并尝试向下滚动到末尾(但失败了)。当按下另一个按钮时,它会将“\nSix”添加到UITextView并尝试向下滚动到末尾(但失败了)。 - OscarTheGrouch
你说的"unsuccessfully"是什么意思?你是在模拟器上测试吗?我看到TextView滚动到了底部...如果我将其滚动到顶部,当我按下五或六时它会滚动到底部。它完美地工作着。 - Duck
5个回答

37

UITextView没有length属性。 以下代码在我的环境中运行良好。

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

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];
}

1
是的!这个完美地运作了(我已经在我的应用程序中尝试了各种滚动可见范围的变化!) - iPhoneDollaraire
这似乎比其他被接受的答案更有效!谢谢。 - Rambatino

4
在IOS8中,调用ensureLayoutForTextContainer似乎可以使此解决方案起作用...我花了将近一个小时来追踪这个问题。
    logObject.layoutManager.ensureLayoutForTextContainer(logObject.textContainer)

    logObject.setContentOffset(CGPointMake(0.0, logObject.contentSize.height), animated:false)

1
这对我起作用了:

[_myTextView.layoutManager ensureLayoutForTextContainer:_myTextView.textContainer];
[_myTextView scrollRangeToVisible:NSMakeRange([_myTextView.text length], 0)];

-1

这是我使用的,它运行良好。 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时,我的视图无法滚动到绝对底部。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接