iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

【Swift】TextView のカーソル位置を取得する

今回は、タイトルの通り TextView から Cursor 位置 (Frame) を取得する方法を紹介していきたいと思います👷‍♀️

結論

結論下記のように CursorFrame を取得することができます。UITextInputインスタンスプロパティ selectedTextRange でテキスト内で選択されている Range を取得し、start を指定することでその先頭。つまり、Cursor の位置に該当する Range を取得しています。次に、同じく UITextInputインスタンスメソッドである caretRect(for:) で指定された UITextPosition(挿入点) の Frame を取得しています。

if let start = textView.selectedTextRange?.start {
    let cursorFrame = textView.caretRect(for: start)
}

ちなみに、UITextFieldUITextView と同様に UITextInput プロトコルに準拠しているので、今回と同様の方法で Cursor 位置を取得できるかと思います。

参考

その他の記事

yamato8010.hatenablog.com

yamato8010.hatenablog.com

yamato8010.hatenablog.com