Allowing single digit in UITextField in iOS

前端 未结 13 1428
耶瑟儿~
耶瑟儿~ 2020-12-05 03:55

I have a Verification ViewController, I get 4 digit verification code by SMS and I need to enter those code to login, I have created the ViewController

13条回答
  •  眼角桃花
    2020-12-05 04:16

    I was working on a similar functionality and did it in my way. Solution below. Swift 4

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    
     //For clear button pressed
     //If the textfield has already text in it
     if string.count == 0 {
        textField.text = string
        return true
     }
    
     //For First time entry into the text field
     guard let text = textField.text, text.count <= 0  else {
        //If user enter second character
        return false
     }
     //For First time entry into the text field
     if text.count == 0  {
         textField.text = string
         textField.resignFirstResponder()
         self.nextResponde(tag: textField.tag)
         return true
      }
      return false
    }
    
    //To make the next field as responder
    func nextResponde(tag: Int) {
        switch tag {
        case self.PINTextField.tag:
            guard let text = self.PINTextField1.text, text.count == 1 else {
                self.PINTextField1.becomeFirstResponder()
                return
            }
        case self.PINTextField1.tag:
            guard let text = self.PINTextField2.text, text.count == 1 else {
                self.PINTextField2.becomeFirstResponder()
                return
            }
        case self.PINTextField2.tag:
            guard let text = self.PINTextField3.text, text.count == 1 else {
                self.PINTextField3.becomeFirstResponder()
                return
            }
        default:
            let _ = tag
        }
    }
    

提交回复
热议问题