当我在UIFextField类型文本之后使用Swift语言中的默认安全文本条目时。
尝试编辑安全文本后,一旦UITextField失去焦点,则首先重置 UITextField,然后在UITextField中启动新文本。
如何编辑旧的安全文本而不将数据存储到任何类型的String对象
答案 0 :(得分:2)
这answer帮我解决了这个问题。
textField.isSecureTextEntry = true
如果你使testField isSecureTextEntrysecure 属性使为真,则以下属性不起作用。
textField.clearsOnBeginEditing = false
答案 1 :(得分:1)
我建议创建一个自定义的UITextField类,并覆盖becomeFirstResponder()方法,添加您想要的功能:
您可以在自定义响应程序中覆盖此方法以更新您的 对象的状态或执行某些操作,例如突出显示 选择。如果重写此方法,则必须在某些方面调用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
:
答案 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
}