Convert selectedTextRange UITextRange to NSRange

后端 未结 4 1736
失恋的感觉
失恋的感觉 2020-12-24 12:56

How can I convert a UITextRange object to an NSRange? I\'ve seen plenty of SO posts about going the other direction but that\'s the opposite of wha

4条回答
  •  我在风中等你
    2020-12-24 13:03

    Here's a Swift extension based on the answer by Vitaly S.

    extension UITextInput {
        var selectedRange: NSRange? {
            guard let range = self.selectedTextRange else { return nil }
            let location = offsetFromPosition(beginningOfDocument, toPosition: range.start)
            let length = offsetFromPosition(range.start, toPosition: range.end)
            return NSRange(location: location, length: length)
        }
    }
    

    Swift 4

    extension UITextInput {
        var selectedRange: NSRange? {
            guard let range = selectedTextRange else { return nil }
            let location = offset(from: beginningOfDocument, to: range.start)
            let length = offset(from: range.start, to: range.end)
            return NSRange(location: location, length: length)
        }
    }
    

提交回复
热议问题