ios - 使用 Swift 在 UITextFields 之间自动切换

标签 ios iphone swift uitextfield uitextfielddelegate

我在一个 UIView 中有 4 个 UITextFields,如下所示:

enter image description here

每个 UITextField 限制为 4 个字符。我想实现 UITextFields 之间的自动切换,每个 UITextField 的计数字符。

我使用 shouldChangeCharactersIn 作为限制字符:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        let maxLength = 4
        var newString = String()
        let currentString: NSString = textField.text! as NSString
        newString = currentString.replacingCharacters(in: range, with: string)

        return newString.length <= maxLength
    }

这是我的开关工具:

func textFieldDidChange(_ textField: UITextField){

    let text = textField.text

    if text?.utf16.count == 4 {
        switch textField {
        case firstPartTextField:
            secondPartTextField.becomeFirstResponder()
        case secondPartTextField:
            thirdPartTextField.becomeFirstResponder()
        case thirdPartTextField:
            fourthPartTextField.becomeFirstResponder()
        default:
            break
        }
    }
}

我的问题是在删除文本时切换到之前的 UITextField,当 UITextField 为空时我无法检测到退格键事件。

最佳答案

在 viewDidLoad() 中为 textField 添加目标

firstTxt.addTarget(self, action: #selector(textFieldDidChange(textField:)), for: UIControlEvents.editingChanged)
    secTxt.addTarget(self, action: #selector(textFieldDidChange(textField:)), for: UIControlEvents.editingChanged)
    thirdTxt.addTarget(self, action: #selector(textFieldDidChange(textField:)), for: UIControlEvents.editingChanged)
    fourTXt.addTarget(self, action: #selector(textFieldDidChange(textField:)), for: UIControlEvents.editingChanged)

比创建选择器方法

func textFieldDidChange(textField: UITextField){

    let text = textField.text

    if text?.utf16.count == 1{
        switch textField{
        case firstTxt:
            secTxt.becomeFirstResponder()
        case secTxt:
            thirdTxt.becomeFirstResponder()
        case thirdTxt:
            fourTXt.becomeFirstResponder()
        case fourTXt:
            fourTXt.resignFirstResponder()
        default:
            break
        }
    }else{

    }
}

关于ios - 使用 Swift 在 UITextFields 之间自动切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41912690/

相关文章:

ios - 如何混淆 cocoa touch 框架代码? ( swift 4)

iphone - XCode 4.5 Storyboard 不显示我的 View Controller 的一些导航栏

iphone - 矩阵堆栈容量在 Android NDK 中有点小

ios - 如何检查字典值是字符串还是数组

ios - 初始化两个元组的数组失败

ios - 按下主页按钮后 AVAudioPlayer 不播放音频

iphone - 通过 Iphone 发送短信,MFMessageComposeViewController

当 UITextField.secureTextEntry 改变它的值时 Swift 得到回调

iphone - 在ios中使用打印机打印nsmutable数组

iOS 5 SDK 创建随处可用的方法