UITextField, automatically move to next after 1 character

后端 未结 6 673

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:12

    UPDATED CODE FOR SWIFT 3

    @IBOutlet weak var tf1: UITextField!
    @IBOutlet weak var tf2: UITextField!
    @IBOutlet weak var tf3: UITextField!
    @IBOutlet weak var tf4: UITextField!
    override func viewDidLoad() {
        super.viewDidLoad()
        tf1.delegate = self
        tf2.delegate = self
        tf3.delegate = self
        tf4.delegate = self
    
    
        tf1.addTarget(self, action: #selector(self.textFieldDidChange(textField:)), for: UIControlEvents.editingChanged)
        tf2.addTarget(self, action: #selector(self.textFieldDidChange(textField:)), for: UIControlEvents.editingChanged)
        tf3.addTarget(self, action: #selector(self.textFieldDidChange(textField:)), for: UIControlEvents.editingChanged)
        tf4.addTarget(self, action: #selector(self.textFieldDidChange(textField:)), for: UIControlEvents.editingChanged)
    
    }
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(true)
        tf1.becomeFirstResponder()
    
    }
    func textFieldDidChange(textField: UITextField){
    
        let text = textField.text
    
        if text?.utf16.count==1{
            switch textField{
            case tf1:
                tf2.becomeFirstResponder()
            case tf2:
                tf3.becomeFirstResponder()
            case tf3:
                tf4.becomeFirstResponder()
            case tf4:
                tf4.resignFirstResponder()
            default:
                break
            }
        }else{
    
        }
    }
    

提交回复
热议问题