如何在另一个行范围之前获得行范围



我使用此代码来获取当前行范围:

extension UITextView {
var currentLineRange: NSRange {
let nsText = self.text as NSString
let currentRange = nsText.lineRange(for: self.selectedRange)
return currentRange
}
}

如何在另一个之前获得行范围,例如:

func getLineRangeBefore(_ lineRange: NSRange) -> NSRange {
//...
}

一种方法是让线开始的范围,然后找到线开始之前位置的线范围:

extension NSString {
func getLineRangeBefore(_ lineRange: NSRange) -> NSRange? {
var lineStart = 0
getLineStart(&lineStart, end: nil, contentsEnd: nil, for: lineRange)
if lineStart == 0 {
return nil
}
return self.lineRange(for: NSRange(location: lineStart - 1, length: 0))
}
}

注意,这应该返回一个可选的NSRange,因为范围可以包含在第一行中,在这种情况下,它之前没有行

相关内容

最新更新