ios - 当用户以编程方式单击 swift ios 中的删除按钮时,如何将光标从一个文本字段自动移动到另一个文本字段?

标签 ios swift uitextfield swift4

目前,我有 6 个 textfields,一旦用户点击键盘上的数字,我就会从一个 textfield 移动到下一个。

我要解决的问题是:如果用户点击Delete Button返回重新输入不同的数字,我该如何编码一个程序?

我如何让用户返回并在键盘上输入新数字并将 textfield 更改回其原始代码?

我希望用户能够在键盘上的 6 个字段中输入一个数字,然后让用户能够单击 Delete Button 返回并重新输入号码。我希望用户必须单击 Delete Button

另外,如何去掉 UItextfield 中闪烁的蓝线?

我一直被这个问题困扰了一段时间,不知道如何解决这个问题。

    @objc func textFieldDidChange(textfield: UITextField) {
        let text = textfield.text
        if text?.utf16.count == 1 {
            switch textfield {
            case textfield1:
                textfield1.backgroundColor = UIColor.black
                textfield1.textColor = .white
                textfield2.becomeFirstResponder()
                textfield2.backgroundColor = UIColor.black
                textfield2.textColor = .white
            case textfield2:
                textfield3.becomeFirstResponder()
                textfield3.backgroundColor = UIColor.black
                textfield3.textColor = .white
            case textfield3:
                textfield4.becomeFirstResponder()
                textfield4.backgroundColor = UIColor.black
                textfield4.textColor = .white
            case textfield4:
                textfield5.becomeFirstResponder()
                textfield5.backgroundColor = UIColor.black
                textfield5.textColor = .white
            case textfield5:
                textfield6.becomeFirstResponder()
                textfield6.backgroundColor = UIColor.black
                textfield6.textColor = .white
            case textfield6:
                textfield6.resignFirstResponder()
            default:
                break
            }
        }
        else {

        }
    }

最佳答案

你可以使用这个:

func textFieldDidChange(textField: UITextField) {
    let text = textField.text!
    if text.utf16.count == 0 {
        switch textField {
        case textField2:
            textField1.becomeFirstResponder()
        case textField3:
            textField2.becomeFirstResponder()
        case textField4:
            textField3.becomeFirstResponder()
        case textField5:
            textField4.becomeFirstResponder()
        case textField6:
            textField5.becomeFirstResponder()
        default:
            break
        }
    } else if text.utf16.count == 2 {
        let indexStartOfText = text.index(text.startIndex, offsetBy: 1)
        textField.text = String(text[..<indexStartOfText])
        let tempStr = String(text[indexStartOfText])
        switch textField {
        case textField1:
            textField1.backgroundColor = UIColor.black
            textField1.textColor = .white
            textField2.becomeFirstResponder()
            textField2.backgroundColor = UIColor.black
            textField2.textColor = .white
            textField2.text = tempStr
        case textField2:
            textField3.becomeFirstResponder()
            textField3.backgroundColor = UIColor.black
            textField3.textColor = .white
            textField3.text = tempStr
        case textField3:
            textField4.becomeFirstResponder()
            textField4.backgroundColor = UIColor.black
            textField4.textColor = .white
            textField4.text = tempStr
        case textField4:
            textField5.becomeFirstResponder()
            textField5.backgroundColor = UIColor.black
            textField5.textColor = .white
            textField5.text = tempStr
        case textField5:
            textField6.becomeFirstResponder()
            textField6.backgroundColor = UIColor.black
            textField6.textColor = .white
            textField6.text = tempStr
        case textField6:
            textField6.resignFirstResponder()
        default:
            break
        }
    }
}

在这段代码中,你永远不会关注 UITextFields 的第一个字母,而是关注 2 个字母,如果 sender.text.count 等于 2 你设置下一个 UITextField 的第二个数字,如果 sender.text.count 等于零,则表示用户已删除某些内容(因为我们在 Editing Changed 事件),我们应该向后移动光标。
并在 if 的第一条语句中为 UI 做任何你想做的事情。
它有点乱,但它有效。

关于ios - 当用户以编程方式单击 swift ios 中的删除按钮时,如何将光标从一个文本字段自动移动到另一个文本字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49930852/

相关文章:

ios - UI 卡住并且操作延迟执行

ios - 强调字体 swift 的粗体

ios - 仅以秒为单位的倒计时(表格 00 :20 to 0) using NSTimer

ios - 如何在编辑时更改 uitextfield leftView image tintColor

ios - 使用 UIAppearance 更改选定的单元格背景颜色

ios - 工具栏在 iOS 7 上消失

swift - 编辑按钮没有任何功能,单元格左侧没有带减号的红色圆圈

iphone - UITextField:使其更高并将输入文本垂直居中

ios - 检查我 View 中的所有文本字段是否为空客观c

ios - 根据设备(iPhone 或 iPad)的不同设备方向