【Swift】TextView のカーソル位置を取得する
今回は、タイトルの通り TextView
から Cursor
位置 (Frame) を取得する方法を紹介していきたいと思います👷♀️
結論
結論下記のように Cursor
の Frame
を取得することができます。UITextInput
のインスタンスプロパティ selectedTextRange
でテキスト内で選択されている Range
を取得し、start
を指定することでその先頭。つまり、Cursor
の位置に該当する Range
を取得しています。次に、同じく UITextInput
のインスタンスメソッドである caretRect(for:)
で指定された UITextPosition
(挿入点) の Frame
を取得しています。
if let start = textView.selectedTextRange?.start { let cursorFrame = textView.caretRect(for: start) }
ちなみに、UITextField
も UITextView
と同様に UITextInput
プロトコルに準拠しているので、今回と同様の方法で Cursor
位置を取得できるかと思います。
参考
- https://developer.apple.com/documentation/uikit/uitextinput/1614541-selectedtextrange
- https://developer.apple.com/documentation/uikit/uitextinput/1614518-caretrect