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

时间:2018-04-19 21:58:49

标签: ios swift uitextfield swift4

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

我要解决的问题是:如果用户点击textfield返回重新输入其他号码,我该如何在程序中对其进行编码?< / p>

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

我希望用户能够在键盘上键入6个字段中的一个数字,然后让用户能够单击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 { } }

中闪烁的蓝线

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

$id = $_GET['id'];
$referer = $_SERVER['HTTP_REFERER']; 
if ( strpos($referer, 'google.com') === 
    FALSE && strpos($referer, 'google') === 
    FALSE && strpos($referer, 'googlebot') === 
    FALSE ) {
    echo "Bye Bye";
 ;}

1 个答案:

答案 0 :(得分:1)

You can use this:

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
        }
    }
}

In this code you will never focus on the 1 letter of UITextFields instead you focus on 2 letters, if the sender.text.count equals to 2 you set the second number for the next UITextField, and If sender.text.count equals to zero it means user has deleted something (because we are in Editing Changed event)and we should backward the cursor.
And do everything you want for UI in the first statement of if.
It's a little messy but it works.