输入框TextField中光标位置的设定

  1. 输入框中字符串的信息
// テキストファイールドのテキストの始まり
let startPosition: UITextPosition = textField.beginningOfDocument

// 末尾のテキストファールドテキスト
let endPosition: UITextPosition = textField.endOfDocument

// 現在選択されている範囲
let selectedRange: UITextRange? = textField.selectedTextRange

  1. 获取光标所在位置
// 現在のカーソル位置
let cursorPosition = textField.offset(from: textField.beginningOfDocument, to: selectedRange!.start)
  1. 光标位置的设定
    1)设定selectedTextRange的起始位置和结束位置一致,即设定了光标的位置
    2)selectedTextRange的起始位置和结束位置若不一致,则为选中字符串的部分值,可通过此来选中全体字符串
// カーソル位置を文字列の2番目の位置に取得します
let targetPostion = textField.position(from: textField.beginningOfDocument, offset: 2)!
DispatchQueue.main.asyncAfter(deadline: .now()) {
	// カーソル位置を設定します
	textField.selectedTextRange = textField.textRange(from: targetPostion, to: targetPostion)
}

必须加上DispatchQueue延迟,否则在复制粘贴的情况下,光标的位置设定会无效:
DispatchQueue.main.async{ textField.selectedTextRange = ...}
PS:猜测可能是粘贴时系统按照粘贴的规则重设了光标的位置

参考链接:http://www.it1352.com/914445.html

发布了4 篇原创文章 · 获赞 0 · 访问量 72

猜你喜欢

转载自blog.csdn.net/weixin_42163902/article/details/104075478
今日推荐