在获得最大长度后移动到nextField,在获得0长度后移动到前一个

时间:2018-02-14 20:58:54

标签: ios swift uitextfield

嗨:)所以首先可能代码..

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

    guard let newString = (textField.text as NSString?)?.replacingCharacters(in: range, with: string) else { return true }
    var newLength = newString.characters.count

    switch textField {
    case numberTextField:
        textField.text = newString.grouping(every: 4, with: " ")

        if newLength > 18 {
            dateTextField.becomeFirstResponder()
        }

    case dateTextField:
        textField.text = newString.grouping(every: 2, with: "/")

        if newLength > 4 {
            cvcTextField.becomeFirstResponder()
        } else if (textField.text?.isEmpty)! {
            numberTextField.becomeFirstResponder()
        }

    case cvcTextField:
        textField.text = newString

        if newLength >= 3 {
            newLength = 3
        } else if (textField.text?.isEmpty)! {
            dateTextField.becomeFirstResponder()
        }

    default:
        return false
    }
    return false
}

我有3 UITextFields。第一个是每4个字符放一个空格,每2个字符放第二个斜线,但这并不重要。我们想在他们之间顺利进行。

在达到UITextField之后移动到下一个MaxLength非常简单。它只是将newResponder设置为下一个UITextField。很酷..但是如果我们处于中间UITextField它是空的并且我们想要转移到前一个怎么办?按下键盘上的删除按钮什么都不做(我们应该检测退格?)。输入例如一个数字后,删除它,它可以工作......它转到前一个所以一切都很好,除了空UITextField ..

有什么想法吗?

谢谢!

编辑:所以我认为可以解决问题的方法是在当前TextField上按下新数字后,maxLenght应该直接转到下一个TextField,而不是空UITextField它应该填充我们之前UITexField可能会按下的数字吗?

0 个答案:

没有答案