如何在Swift中清除UITextField安全文本条目?

时间:2017-04-04 09:54:29

标签: ios swift uitextfield

当我在UIFextField类型文本之后使用Swift语言中的默认安全文本条目时。

Image for When enter text first time

尝试编辑安全文本后,一旦UITextField失去焦点,则首先重置 UITextField,然后在UITextField中启动新文本

Image for try to edit old text

如何编辑旧的安全文本而不将数据存储到任何类型的String对象

3 个答案:

答案 0 :(得分:2)

answer帮我解决了这个问题。

   textField.isSecureTextEntry = true 
如果你使testField isSecureTextEntrysecure 属性使为真,则

以下属性不起作用。

   textField.clearsOnBeginEditing = false

答案 1 :(得分:1)

我建议创建一个自定义的UITextField类,并覆盖become​First​Responder()方法,添加您想要的功能:

  

您可以在自定义响应程序中覆盖此方法以更新您的   对象的状态或执行某些操作,例如突出显示   选择。如果重写此方法,则必须在某些方面调用super   指出你的实施。

自定义类应类似于:

class CustomSecureTextField: UITextField {
    override func becomeFirstResponder() -> Bool {
        super.becomeFirstResponder()

        if !isSecureTextEntry { return true  }

        if let currentText = text { insertText(currentText) }

        return true
    }
}

becomeFirstResponder的实施逻辑如下:

默认情况下,安全条目文本字段在成为第一个响应者文本时清除插入的文本,因此在CustomSecureTextField中发生的情况是,如果文本字段是安全条目,它将重新插入当前文本插入文本 - 清除后 - ,但你必须确保文本字段输入是安全的(这是添加if !isSecureTextEntry { return true }的目的)或文本将被复制(重新插入) )每次文本字段成为第一响应者。

<强>输出:

请注意,这两个文本字段都是CustomSecureTextField

的类型

enter image description here

答案 2 :(得分:0)

@Ahmd F解决方案存在一个问题,只需单击该字段,它将自动将文本添加到该字段中,我已在下面的代码中解决了该问题,谢谢

override open func becomeFirstResponder() -> Bool {
    super.becomeFirstResponder()
    if !isSecureTextEntry { return true}
    if let currrentText = text {
        self.text = ""
        insertText(currrentText)
    }
    return true
}