gpt4 book ai didi

ios - Swift 中获取和设置 UITextField 和 UITextView 的光标位置

转载 作者:行者123 更新时间:2023-11-29 05:38:30 46 4
gpt4 key购买 nike

我一直在尝试 UITextField 以及如何使用它的光标位置。我找到了一些与 Objective-C 相关的答案,如

但是由于我正在使用 Swift,所以我想学习如何获取当前光标位置并在 Swift 中设置它。

下面的答案是我从 Objective-C 实验和翻译的结果。

最佳答案

以下内容适用于 UITextFieldUITextView

有用信息

文本字段文本的开头:

let startPosition: UITextPosition = textField.beginningOfDocument

文本字段文本的最末尾:

let endPosition: UITextPosition = textField.endOfDocument

当前选择的范围:

let selectedRange: UITextRange? = textField.selectedTextRange

获取光标位置

if let selectedRange = textField.selectedTextRange {

let cursorPosition = textField.offset(from: textField.beginningOfDocument, to: selectedRange.start)

print("\(cursorPosition)")
}

设置光标位置

为了设置位置,所有这些方法实际上都是设置一个具有相同开始值和结束值的范围。

从头开始

let newPosition = textField.beginningOfDocument
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)

到最后

let newPosition = textField.endOfDocument
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)

当前光标位置左侧的一个位置

// only if there is a currently selected range
if let selectedRange = textField.selectedTextRange {

// and only if the new position is valid
if let newPosition = textField.position(from: selectedRange.start, offset: -1) {

// set the new position
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
}
}

到任意位置

从开头开始,向右移动 5 个字符。

let arbitraryValue: Int = 5
if let newPosition = textField.position(from: textField.beginningOfDocument, offset: arbitraryValue) {

textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
}

相关

选择所有文本

textField.selectedTextRange = textField.textRange(from: textField.beginningOfDocument, to: textField.endOfDocument)

选择文本范围

// Range: 3 to 7
let startPosition = textField.position(from: textField.beginningOfDocument, offset: 3)
let endPosition = textField.position(from: textField.beginningOfDocument, offset: 7)

if startPosition != nil && endPosition != nil {
textField.selectedTextRange = textField.textRange(from: startPosition!, to: endPosition!)
}

在当前光标位置插入文本

textField.insertText("Hello")

注释

  • 使用 textField.becomeFirstResponder() 将焦点置于文本字段并使键盘出现。

  • 参见this answer了解如何获取某个范围内的文本。

另请参阅

关于ios - Swift 中获取和设置 UITextField 和 UITextView 的光标位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56793807/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com