我的函数想要在textview中获取光标当前位置,但是当我有字符串" "在textview中光标位于最后位置,它返回范围(0,6),当前索引为6,预期位置为3,如果有任何方法可以获取光标位置,请告诉我
func getcurserforTextView(textView : UITextView ) -> Int {
var cursorPosition = 0
if let selectedRange = textView.selectedTextRange {
cursorPosition = textView.offset(from: textView.beginningOfDocument, to: selectedRange.start)
}
return cursorPosition
}
答案 0 :(得分:1)
selectedRange
和offset(from:to:)
值基于文本视图中文本的UTF-16字符。因此该字符串的结果为6是正确的,因为该字符串在使用UTF-16字符编码时包含6个字符。
因此,根据您对获取的光标位置所做的操作,您可能需要将该UTF-16偏移转换为“普通”String
索引。
请参阅Converting scanLocation from utf16 units to character index in NSScanner (Swift),其中包含类似情况和执行转换的方法。