我想将密码屏蔽延迟几秒钟。 但是默认时间是3秒(大约)。这不是我想要的。
答案 0 :(得分:0)
默认情况下,这是UITextField的行为,当您将其设置为isSecureTextEntry = true
时,
解决方法是实现textField的shouldChangeCharactersIn
委托方法并可以观察textChange事件,在那里您用选择的Timer
设置了TimeInterval
,经过这么长的时间后,文本将更改为安全。
同样,请注意,这不会提供与UITextField中的安全条目相同的确切行为。默认情况下,它会确保您输入的文本是一个一个的安全,而在这里,它将一次显示和隐藏整个文本,一旦您停止输入文本,它将等待指定的持续时间,然后使其安全。 / p>
class ViewController: UIViewController {
@IBOutlet var textField: UITextField!
var timer: Timer?
let timeInterval: TimeInterval = 5 // Modify it to the timeInterval of your choice.
}
用于UITextFieldDelegate方法实现的代码是:
extension ViewController: UITextFieldDelegate {
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
textField.isSecureTextEntry = false
if let timer = timer {
timer.invalidate()
}
timer = Timer.scheduledTimer(withTimeInterval: timeInterval, repeats: false, block: { (timer) in
timer.invalidate()
textField.isSecureTextEntry = true
})
return true
}
}
尝试并分享您的结果。