当我写两个数字时,如何让文字字段-1移动到Swift的另一个文本字段-2?
当我写22时,我想自动移动到另一个文本字段-2。
我试过了,但它没有用:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if let text = textField.text {
let newStr = (text as NSString)
.stringByReplacingCharactersInRange(range, withString: string)
if newStr.isEmpty {
return true
}
let intvalue = Int(newStr)
if textField.tag == 101 { print("101") // only 2 integer
return (intvalue >= 0 && intvalue <= 99) ? true : false
}
else if textField.tag == 102 { print("102") // only 4 integer
return (intvalue >= 0 && intvalue <= 9999) ? true : false
}
}
return true
}
答案 0 :(得分:3)
您应该为textField的editingChanged事件添加一个目标,如下所示,或者只是将一个动作从storyboard拖到您的班级中:
textField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: UIControlEvents.editingChanged)
然后在你的选择器中执行以下操作:
func textFieldDidChange(_ textField: UITextField) {
if textField.tag == 101 && textField.text!.characters.count >= 2 {
secondTextField.becomeFirstResponder()
}
}
答案 1 :(得分:3)
textField.addTarget(self, action: #selector(textDidChanged(textField:)), for: .editingChanged)
func textDidChanged(textField: UITextField)
{
if (textField.text) == "22"
{
newTextField.becomeFirstResponder()
}
}
为两个文本字段添加委托 还将UITextFieldDelegate添加到您的viewcontroller
答案 2 :(得分:3)
为这两个文本字段创建IBAction,并检查IBAction中的第一个文本字段的字符数。如果count为2秒,则文本字段将变为活动状态。
@IBAction func textEntered(_ sender: UITextField) {
if sender.tag == 101 && sender.text?.characters.count == 2
{
(self.view.subviews.first(where: { $0.tag == 102 }) as! UITextField).becomeFirstResponder()
}
}
答案 3 :(得分:2)
无需做更多,
只需修改您的shouldChangeCharactersIn range
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let finalText = (textField.text ?? "")// + string
if textField === self.textField1! && finalText.characters.count >= 2 {
self.textField1.resignFirstResponder()
self.textField2.becomeFirstResponder()
return false
}
else if textField === self.textField2! && finalText.characters.count >= 4 {
self.textField2.resignFirstResponder()
self.textField1.becomeFirstResponder()
return false
}
return true
}
尽量不要在代码中使用tag
,因为在您参与项目后其他程序员无法理解。