我有一个UITextView,其中包含大段文本,在其上方有一个搜索字段。当搜索任何内容时,我希望UITextView可以滚动到特定的文本并进行高亮显示。并且我需要确保UITextView以这样的方式滚动,以使搜索的文本保持在第一行。
我使用属性文本填充了TextView,并添加了一些属性。我尝试获取目标文本之前的文本,并尝试添加与TextView文本开头相同的确切属性来获取其大小。
使用该高度创建一个CGPoint并设置UITextView的contentOffset。但是,TextView滚动到的位置与目标文本无关。也许我的方法是错误的,因为我没有在设置属性时获得TextView的宽度。
我的代码如下:
我使用属性文本填充了TextView,并添加了一些属性。我尝试获取目标文本之前的文本,并尝试添加与TextView文本开头相同的确切属性来获取其大小。
使用该高度创建一个CGPoint并设置UITextView的contentOffset。但是,TextView滚动到的位置与目标文本无关。也许我的方法是错误的,因为我没有在设置属性时获得TextView的宽度。
我的代码如下:
func goToBla() {
if let string = ayatTextView.text {
if let range = string.range(of: tazweedAyahas[8].text) {
let firstPart = string[string.startIndex..<range.lowerBound]
print("before \(tazweedAyahas[5].text) : ")
print(firstPart)
if let otherStr = firstPart as? NSString {
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.alignment = .center
let size = otherStr.size(withAttributes: [NSAttributedStringKey.paragraphStyle: paragraphStyle,
NSAttributedStringKey.font: UIFont(name: "me_quran", size: 30)
])
let point = CGPoint(x: 0, y: size.height)
ayatTextView.setContentOffset(point, animated: true)
}
}
}
}