UITextField, automatically move to next after 1 character

后端 未结 6 731

Scenario: I have 4 UITextFields that only accept 1 character. Easy.

Problem: After I enter the 1 character, I want the next TextField to become active automatically with

6条回答
  •  天命终不由人
    2021-01-31 12:28

    Swift 4.x

    textField.addTarget(self, action: #selector(self.textFieldDidChange(textField:)), for: .editingChanged)
    

    @objc func textFieldDidChange(textField: UITextField)
    {
        let text = textField.text
        if text?.utf16.count == 1 {
            switch textField {
            case txtOtpNumber1:
                txtOtpNumber2.becomeFirstResponder()
            case txtOtpNumber2:
                txtOtpNumber3.becomeFirstResponder()
            case txtOtpNumber3:
                txtOtpNumber4.becomeFirstResponder()
            case txtOtpNumber4:
                txtOtpNumber4.resignFirstResponder()
            default:
                break
            }
        } else {
            switch textField {
            case txtOtpNumber4:
                txtOtpNumber3.becomeFirstResponder()
            case txtOtpNumber3:
                txtOtpNumber2.becomeFirstResponder()
            case txtOtpNumber2:
                txtOtpNumber1.becomeFirstResponder()
            case txtOtpNumber1:
                txtOtpNumber1.resignFirstResponder()
            default:
                break
            }
        }
    }
    

    PS. Chetan's answer updated for the current Swift.

提交回复
热议问题