美文网首页
UITextField/UITextView

UITextField/UITextView

作者: iLeooooo | 来源:发表于2020-12-31 10:22 被阅读0次

以下内容适用于UITextFieldUITextView

修改光标的起始位置

/// 方法一
/// 此方法只会修改光标的位置,不会更改placeholder的文案位置
text.setValue(NSNumber(value: 12), forKey: "paddingLeft")

/// 方法二
/// 此方法会同时修改光标和placeholder的位置
let leftV = UIView(frame: CGRect(x: 0, y: 0, width: 8, height: 1))
text.leftView = leftV
text.leftViewMode = .always

有用的信息

文本字段文本的开头:

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 7let 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()将焦点置于文本字段并使键盘显示。

  • 有关如何在某个范围内获取文本,请参阅此答案

也可以看看

相关文章

网友评论

      本文标题:UITextField/UITextView

      本文链接:https://www.haomeiwen.com/subject/trjloktx.html