15

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

//TextView is a UITextView 

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

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

另外,我是否需要将文件所有者指定为委托人?这有什么不同吗?

4

5 回答 5

37

UITextView 没有长度属性。以下代码适用于我的环境。

[TextView scrollRangeToVisible:NSMakeRange([TextView.text length], 0)];
于 2011-02-24T06:00:41.993 回答
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];
}
于 2012-11-14T13:08:02.320 回答
4

在 IOS8 中,对 ensureLayoutForTextContainer 的调用似乎使这个解决方案起作用。我花了将近一个小时来追踪它。

    logObject.layoutManager.ensureLayoutForTextContainer(logObject.textContainer)

    logObject.setContentOffset(CGPointMake(0.0, logObject.contentSize.height), animated:false)
于 2014-10-13T22:16:25.550 回答
1

这对我有用:

[_myTextView.layoutManager ensureLayoutForTextContainer:_myTextView.textContainer];
[_myTextView scrollRangeToVisible:NSMakeRange([_myTextView.text length], 0)];
于 2015-09-09T14:04:51.723 回答
-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 时,我的视图不会滚动到绝对底部。

于 2012-11-17T06:24:38.893 回答