如何更改UITextField中的密码屏蔽时间?或具有默认行为

时间:2018-09-25 07:03:08

标签: ios uitextfield

我想将密码屏蔽延迟几秒钟。 但是默认时间是3秒(大约)。这不是我想要的。

1 个答案:

答案 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
    }
}

尝试并分享您的结果。