objective-c - 滚动到 UITextView 中的范围

标签 objective-c iphone cocoa cocoa-touch

我有一个包含文本的 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/

相关文章:

iphone - Cocos2d、iOS : what is the correct way to remove sprites from cache?

objective-c - 为什么不调用 NSResponder 的键盘操作?

ios - Swift iOS - 参数标签 '(float3:)' 与任何可用的重载不匹配

iphone - 创建类似用户位置的动画 蓝色弹珠掉落

ios - 获取当前的主屏幕图像

ios - 使用核心图更新图形的特定部分?

iphone - 我需要释放这个对象吗?

iOS:使用 Sprite Kit 实现用户控制的相机 "zoom"

macos - NSView 有背景颜色吗?如果有的话我找不到

iphone - 以编程方式生成 HTML