当用户以编程方式单击swift ios中的删除按钮时,如何自动将光标从一个文本字段移动到另一个文本字段?

目前,我有6个textfields textfield ,一旦用户点击键盘上的数字,我就会从一个textfield移动到另一个textfield

我试图解决的问题是:如果用户单击“ Delete Button返回以重新输入其他数字,我该如何在程序中对其进行编码?

如何让用户返回键盘上键入新号码并将textfield更改回原始代码?

我希望用户能够在键盘上键入6个字段中的一个数字,然后让用户能够单击“ Delete Button返回并重新输入该号码。 我希望用户必须单击“ Delete Button

另外,如何摆脱UItextfield闪烁的蓝线?

我一直坚持这个问题一段时间,无法弄清楚如何解决这个问题。

  @objc func textFieldDidChange(textfield: UITextField) { let text = textfield.text if text?.utf16.count == 1 { switch textfield { case textfield1: textfield1.backgroundColor = UIColor.black textfield1.textColor = .white textfield2.becomeFirstResponder() textfield2.backgroundColor = UIColor.black textfield2.textColor = .white case textfield2: textfield3.becomeFirstResponder() textfield3.backgroundColor = UIColor.black textfield3.textColor = .white case textfield3: textfield4.becomeFirstResponder() textfield4.backgroundColor = UIColor.black textfield4.textColor = .white case textfield4: textfield5.becomeFirstResponder() textfield5.backgroundColor = UIColor.black textfield5.textColor = .white case textfield5: textfield6.becomeFirstResponder() textfield6.backgroundColor = UIColor.black textfield6.textColor = .white case textfield6: textfield6.resignFirstResponder() default: break } } else { } } 

你可以用这个:

 func textFieldDidChange(textField: UITextField) { let text = textField.text! if text.utf16.count == 0 { switch textField { case textField2: textField1.becomeFirstResponder() case textField3: textField2.becomeFirstResponder() case textField4: textField3.becomeFirstResponder() case textField5: textField4.becomeFirstResponder() case textField6: textField5.becomeFirstResponder() default: break } } else if text.utf16.count == 2 { let indexStartOfText = text.index(text.startIndex, offsetBy: 1) textField.text = String(text[.. 

在这段代码中,你永远不会专注于UITextFields的1个字母,而是专注于2个字母,如果sender.text.count等于2,则为下一个UITextField设置第二个数字,如果sender.text.count等于零这意味着用户已删除了某些内容(因为我们处于Editing Changed事件中),我们应该向后移动光标。
并在if的第一个语句中执行UI所需的一切。
它有点乱,但它的工作原理。