例えばこんな
swift
1@IBOutlet weak var textView: UITextView! //or textView = UITextView()
textViewがあって、そのキャレットの位置が欲しい場合、
swift
1let myText = textView.text!
2let myOffset: Int = textView.selectedRange.location //キャレットの位置。こいつだけはInt
3let startIndex: String.Index = myText.startIndex //textの一番最初のインデックス
4//let endIndex: String.Index = mYText.endIndex. //こんなのもいけます
5
6let caretPosition: String.Index = myText.index(startIndex, offsetBy: myOffset)
こんな風にどこにあるか取れます。あとはこいつ(caretPosition)を使ってキャレットから任意の文字列分移動した位置を取得したりも出来ます。ここでは例として5文字分とします。
swift
1let voluntaryPosition: String.Index = text.index(caretPosition, offsetBy: 5)
あとは任意の文字のインデックスが欲しい場合は
swift
1let indexOfE: String.Index = textView.index(of: "E")
なんて方法もあります。
手前味噌ではありますがキャレット・文字列の位置(index)の取り扱い方を回答しました。参考にしてみてください。
textViewにおいてボタンをタップしたらカーソルの右(左は成功しています)の文字を1字削除するコード
みたいにも取得できます。