我有一个包含文本的 UITextView
,我希望能够滚动它,使文本的给定 NSRange
位于 View 的顶部.使用 scrollRangeToVisible:
不起作用:它将滚动范围,使其位于 View 中的某个位置,不一定是我想要的位置。我如何滚动才能使 UITextView
中的特定 NSRange
文本恰好位于顶部?
感谢您的任何建议。
最佳答案
想到的唯一答案是自己计算出 contentOffset。使用 NSString -sizeWithFont:forWidth:lineBreakMode:
sizeWithFont:constrainedToSize:lineBreakMode:
计算出您想要的文本正上方的框的大小(如果文本不必开始一行,这可能会很棘手;您可能必须尝试多个范围才能找到导致高度跳跃的范围)。这应该为您提供 UIScrollView -setContentOffset:animated:
所需的 contentOffset。我有点担心性能,结果可能有必要创建您自己的 UITextView 实现以提高效率(如果它是静态内容,这应该不会那么困难)。
这不是我想要的优雅解决方案,但 UITextView 不会为您提供对布局引擎的大量访问。
关于objective-c - 滚动到 UITextView 中的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1190397/