美文网首页
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