【问题标题】:Swift Automatically change text field after pastingSwift粘贴后自动更改文本字段
【发布时间】:2019-07-30 11:22:45
【问题描述】:

我设置了3个textField,我可以手动输入验证码,光标会在4个字符后移动到下一个textField。

但我也希望在我将代码粘贴到第一个 textField 时发生这种情况。目前它只会完全填充第一个字段而不填充其他框

override func viewDidLoad() {
    super.viewDidLoad()
    //Get the users verification code form Firebase
    getCode()
    token1?.addTarget(self, action: #selector(TokenViewController.textFieldDidChange(_:)), for: UIControl.Event.editingChanged)
    token2?.addTarget(self, action: #selector(TokenViewController.textFieldDidChange(_:)), for: UIControl.Event.editingChanged)
    token3?.addTarget(self, action: #selector(TokenViewController.textFieldDidChange(_:)), for: UIControl.Event.editingChanged)

}

@objc func textFieldDidChange(_ textField: UITextField) {
    if textField == token1 {
        if (textField.text?.count)! >= 4 {
            token2?.becomeFirstResponder()
        }
    }
    else if textField == token2 {
        if (textField.text?.count)! >= 4 {
            token3.becomeFirstResponder()
        }
    }
    else if textField == token3{
        if (textField.text?.count)! >= 4 {
            token3.resignFirstResponder()
        }
    }
}

【问题讨论】:

  • 我看到你正在尝试实现 PinCodeTextField,也许你应该试试这个框架?

标签: swift uitextfield uicontrol


【解决方案1】:

添加:

@objc func textFieldDidChange(_ textField: UITextField) {

        // ...


  if token1.text > 4 || token2.text > 4 || token3.text > 4 {

     let textFields = [token1, token2, token3]

      for token in textFields {

        if token.isFirstResponder {

     token1.text = token.text.prefix(4)
     token2.text = token.text.dropFirst(4).dropLast(4)
     token3.text = token.text.dropFirst(8)
                 }

            }
      }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多