目前,我有 6 个 textfields
,一旦用户点击键盘上的数字,我就会从一个 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[..<indexStartOfText])
let tempStr = String(text[indexStartOfText])
switch textField {
case textField1:
textField1.backgroundColor = UIColor.black
textField1.textColor = .white
textField2.becomeFirstResponder()
textField2.backgroundColor = UIColor.black
textField2.textColor = .white
textField2.text = tempStr
case textField2:
textField3.becomeFirstResponder()
textField3.backgroundColor = UIColor.black
textField3.textColor = .white
textField3.text = tempStr
case textField3:
textField4.becomeFirstResponder()
textField4.backgroundColor = UIColor.black
textField4.textColor = .white
textField4.text = tempStr
case textField4:
textField5.becomeFirstResponder()
textField5.backgroundColor = UIColor.black
textField5.textColor = .white
textField5.text = tempStr
case textField5:
textField6.becomeFirstResponder()
textField6.backgroundColor = UIColor.black
textField6.textColor = .white
textField6.text = tempStr
case textField6:
textField6.resignFirstResponder()
default:
break
}
}
}
在这段代码中,你永远不会关注 UITextFields
的第一个字母,而是关注 2 个字母,如果 sender.text.count
等于 2 你设置下一个 UITextField
的第二个数字,如果 sender.text.count
等于零,则表示用户已删除某些内容(因为我们在 Editing Changed
事件),我们应该向后移动光标。
并在 if 的第一条语句中为 UI 做任何你想做的事情。
它有点乱,但它有效。
关于ios - 当用户以编程方式单击 swift ios 中的删除按钮时,如何将光标从一个文本字段自动移动到另一个文本字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49930852/