Автозаполнение пароля не работает в Swift - PullRequest
4 голосов
/ 05 марта 2020

есть 6 текстовых полей для принятия OTP (одноразовый пароль). Но когда я получаю OTP и пытаюсь ввести пароль для автозаполнения на UITextField, только 4 последних заполнения принимают OTP. Но не все поля. Я приложил снимок экрана

Здесь я сделал все textContentType для .oneTimeCode Как решить проблему, пожалуйста, помогите.

https://i.stack.imgur.com/kkIuQ.jpg

Ответы [ 2 ]

2 голосов
/ 05 марта 2020

попробуйте это для автозаполнения текстового поля

txtOTP.textContentType = .oneTimeCode
2 голосов
/ 05 марта 2020

Попробуйте именовать текстовые поля последовательно txt1 txt2 txt3 txt4 tt5 txt6

override func viewDidLoad() {
 super.viewDidLoad()
 txt1.becomeFirstResponder()
}

 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        if ((textField.text?.count)! < 1 ) && (string.count > 0) {
            if textField == txt1 {
                txt2.becomeFirstResponder()

            }

            if textField == txt2 {
                txt3.becomeFirstResponder()

            }

            if textField == txt3 {
                txt4.becomeFirstResponder()
            }

            if textField == txt4 {
                txt5.becomeFirstResponder()
            }
            if textField == txt5 {
                txt6.becomeFirstResponder()
            }
            if textField == txt6{
                txt6.becomeFirstResponder()
            }

            textField.text = string
            return false
        } else if ((textField.text?.count)! >= 1) && (string.count == 0) {
            if textField == txt2 {
                txt1.becomeFirstResponder()
            }
            if textField == txt3 {
                txt2.becomeFirstResponder()

            }
            if textField == txt4 {
                txt3.becomeFirstResponder()
            }

           if textField == txt5 {
                txt4.becomeFirstResponder()
            }
            if textField == txt6 {
                txt5.becomeFirstResponder()
            }
            if textField == txt1{
               txt6.resignFirstResponder()
            }

            textField.text = ""
            return false
        } else if (textField.text?.count)! >= 1 {
            textField.text = string
            return false
        }

        return true
    }

Happy Coding

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...