在Swift

时间:2016-09-06 14:32:13

标签: ios swift scroll uitextview

在我正在创建的Swift应用程序中,用户可以在文本视图中键入一些文本,然后在其中搜索特定的字符串,就像在Pages(和许多其他人)中一样。

我有他们正在搜索的字符的index为整数(即​​,他们在他们输入的大量文本块中的“hello”的第三个实例上,我知道这是第779个字母我试图自动将文本视图滚动到它们所在的字符串,以便弹出(就像在Pages中一样)。

我正尝试使用此命令跳转到适用的字符串:

self.textview.scrollRangeToVisible(NSMakeRange(index, 0))

但它永远不会跳到正确的位置(有时太远,有时太远),通常取决于屏幕大小,所以我知道index不属于那里。

如何通过使文本视图滚动到某个字符来正确地允许用户跳转到文本视图中的特定字符串?

2 个答案:

答案 0 :(得分:2)

你可以获取字符串,它在索引779之前,然后计算这个字符串的高度,然后滚动到这一点。

<div ng-repeat="item in items">
    <li>{{item.name}}</li>
</div>

答案 1 :(得分:0)

另一个答案似乎不再有效(2021 年 1 月)。但是现在有一个更简单的方法:

// Range specific to the question, any other works
let rangeStart = textView.text.startIndex
let rangeEnd = textView.text.index(rangeStart, offsetBy: 779)
let range = rangeStart..<rangeEnd

// Convert to NSRange
let nsrange = NSRange(range, in: textView.text)

// ... and scroll
textView.scrollRangeToVisible(nsrange)