func textFieldDidBeginEditing(textField: UITextField) { scrlView.setContentOffset(CGPointMake(0, textField.frame.origin.y-70), animated: true) if(textField == firstDigit){ textField.becomeFirstResponder() secondDigit.resignFirstResponder() } else if(textField == secondDigit){ textField.becomeFirstResponder() thirdDigit.resignFirstResponder() } else if(textField == thirdDigit){ //textField.becomeFirstResponder() fourthDigit.becomeFirstResponder() }
我使用四个文本字段输入OTP,一次只能输入一个数字。输入数字后,我需要将光标自动移动到下一个文本字段。
设置textField委托并添加目标:
override func viewDidLoad() { super.viewDidLoad() first.delegate = self second.delegate = self third.delegate = self fourth.delegate = self first.addTarget(self, action: "textFieldDidChange:", forControlEvents: UIControlEvents.EditingChanged) second.addTarget(self, action: "textFieldDidChange:", forControlEvents: UIControlEvents.EditingChanged) third.addTarget(self, action: "textFieldDidChange:", forControlEvents: UIControlEvents.EditingChanged) fourth.addTarget(self, action: "textFieldDidChange:", forControlEvents: UIControlEvents.EditingChanged) }
现在,当文本更改时,更改textField
func textFieldDidChange(textField: UITextField){ let text = textField.text if text?.utf16.count >= 1{ switch textField{ case first: second.becomeFirstResponder() case second: third.becomeFirstResponder() case third: fourth.becomeFirstResponder() case fourth: fourth.resignFirstResponder() default: break } }else{ } }
最后,当用户开始编辑清除textField时
extension ViewController: UITextFieldDelegate{ func textFieldDidBeginEditing(textField: UITextField) { textField.text = "" } }