如何在ios中组合使用密码点和普通文本的UITextField

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在ios中组合使用密码点和普通文本的UITextField相关的知识,希望对你有一定的参考价值。

目前我的文本字段在UITextField中输入为“111-11-1111”。要求是输入“••• - ••-1111”。这可以与安全文本输入和普通文本的组合或任何其他方式来实现它。

答案

你可以像这样实现它。

将变量声明为textCount

 var textCount = 0
 var originalString = String()

然后覆盖函数func textField(_ textField:UITextField,shouldChangeCharactersIn范围:NSRange,replacementString string:String) - > Bool如下:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

    if string == "" {
        textCount = textCount - 1

        var truncated = textField.text?.substring(to: (textField.text?.index(before: (textField.text?.endIndex)!))!)
        textField.text = truncated
        if textCount == 5 || textCount == 3 {
            let truncated = textField.text?.substring(to: (textField.text?.index(before: (textField.text?.endIndex)!))!)
            textField.text = truncated
        }
        truncated = originalString.substring(to: originalString.index(before: originalString.endIndex))
        originalString = truncated!

    }
    else if textCount < 9 {
        if textCount == 3 || textCount == 5 {
            textField.text = textField.text! + "-"
        }

        if textCount <= 4 {
            textField.text = textField.text! + "*"
            originalString.append(string)
        }
        else {
            textField.text = textField.text! + string
            originalString.append(string)
        }

        textCount = textCount + 1
    }
    print(originalString)

    return false
}

请记住将文本字段的文本存储在委托本身中。否则它会给你错误的价值。

另一答案

您必须使用以下方法检查文本字段中的每个文本条目

- (BOOL)textField:(UITextField *)textField
    shouldChangeCharactersInRange:(NSRange)range
                replacementString:(NSString *)string

这种方法。在输入一些特定数量后,您可以附加密码。

以上是关于如何在ios中组合使用密码点和普通文本的UITextField的主要内容,如果未能解决你的问题,请参考以下文章

winform中文本框改为密码框

电脑如何由普通用户切换至超级用户

如何使用css组合到表单中的文本框? [关闭]

只要按下键盘上的x按钮,如何从一个文本字段中删除值

如何让 extjs 组合框像普通的 html 选择框一样工作?

如何在大文本文件中拆分组合列表?