滚动到 UITextView 文本的末尾

Scrolling to the end of UITextView's text

我在视图中有一些内容(例如图像、标签),最后一项是描述 (UITextView)。现在我正在尝试根据 UITextView 文本动态滚动内容。这是我的代码:

- (void)viewDidAppear:(BOOL)animated {

    _descriptions.scrollEnabled = NO;
    [_descriptions sizeToFit];

    _infoScrollView.contentSize = CGSizeMake(_contentsOnInfoView.frame.size.width,
                                             _contentsOnInfoView.frame.size.height + _descriptions.frame.size.height);
}

结果如下:

如您所见,有很多空 space。我需要滚动到文本末尾。

我建议你试试这个。

[myTextView scrollRangeToVisible:NSMakeRange([myTextView.text length], 0)]
//may be it will work for you
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
    //set the line break mode
    paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;

    NSDictionary *attrDict = [NSDictionary dictionaryWithObjectsAndKeys: description.font,
                              NSFontAttributeName,
                              paragraphStyle,
                              NSParagraphStyleAttributeName,
                              nil];


    CGRect rect = [description.text boundingRectWithSize:CGSizeMake(description.size.width, FLT_MAX)
                                                  options:NSStringDrawingUsesLineFragmentOrigin
                                               attributes:attrDict
                                                  context:nil];
    CGSize size = rect.size;
   _infoScrollView.contentSize = CGSizeMake(_contentsOnInfoView.frame.size.width,description.frame.origin.y + size.height + 20)

你应该在

中编写你的代码
-(void) viewDidLayoutSubviews {}

在这种方法中,所有组件都有根据 运行 设备尺寸的框架。并在出现视图之前执行。

我刚找到答案,在 UI 中有一行将描述与一些信息分开!我只是计算该行的 y 并总结描述 height :

_descriptions.scrollEnabled = NO;
[_descriptions sizeToFit];
_infoScrollView.contentSize = CGSizeMake(_infoView.frame.size.width, _line.frame.origin.y + _descriptions.bounds.size.height);

现在可以正常使用了!