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

时间:2017-12-19 05:12:56

标签: ios swift uitextfield

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

2 个答案:

答案 0 :(得分:2)

您必须使用

检查文本字段中的每个文本条目
- (BOOL)textField:(UITextField *)textField
    shouldChangeCharactersInRange:(NSRange)range
                replacementString:(NSString *)string

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

答案 1 :(得分:1)

你可以像这样实现它。

将变量声明为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
}

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