2017-04-04 64 views
3

当我使用默认安全文本在UITextField在Swift语言中输入一次UITextField类型的文本后。如何在Swift中不清楚UITextField安全文本输入?

Image for When enter text first time

一旦失去重心从的UITextField尝试编辑安全文本之后再的UITextField首先复位,它开始把新的文本中的UITextField后。

Image for try to edit old text

如何编辑旧安全文字没有将数据存储到任何String对象的类

回答

1

我建议创建一个自定义UITextField类和重写become​First​Responder()方法不添加您所需的功能:

您可以在自定义响应者中覆盖此方法来更新对象的状态或执行某些操作,例如突出显示 选择。如果您重写此方法,则必须在实现中的某个点处调用超级点。

自定义类应类似于:

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

+0

让我仔细检查。 –

+0

当然!不要忘记让你的文本字段为'CustomSecureTextField'类型。 –

+0

是的,我知道谢谢你提醒我。 –

1

answer帮我找出这个问题。

textField.isSecureTextEntry = true 

下列财产不是要去工作,如果你做testField isSecureTextEntrysecure特性使得真正

textField.clearsOnBeginEditing = false 
+0

让我仔细检查。 –

+0

这段代码不起作用 –

+0

在这里我也说过这是不可能的。迅捷不提供支持。 – GayashanK

相关问题