Edited at

【Swift】UITextViewでキャレットの位置を現在の位置から任意数分移動させる

More than 3 years have passed since last update.

Swiftでのキャレット操作の記事が見つからなかったのでメモ

キャレット位置を現在の位置から指定分ずらすメソッドを拡張してみた。


UITextView+CaretExtension.swift

import UIKit

extension UITextView {

/**
現在のキャレットの位置をoffset分ずらす

:param: offset Int ずらす量

:returns: bool 成功か失敗
*/
func changeCaret(offset:Int) -> Bool {

// 全角文字を確定状態にする
let nowText = self.text
self.text = nowText

if let range = self.selectedTextRange {
let position = self.positionFromPosition(range.start, offset: offset)

self.selectedTextRange = self.textRangeFromPosition(position, toPosition: position)

return true
}

return false
}
}


使い方


ViewController

// 4つ分前の位置にキャレットを持っていく

textView.changeCaret(-4)

boolで返す必要ないか?