iOS 中UITextField的secureTextEntry

2020-03-24  本文已影响0人  AnderQZ

一般密码都会有明文和密文的显示方式,但是常规调用UITextField的secureTextEntry做,会有两个常见的问题。

第一个问题:切换密文secureTextEntry后,再次输入内容,明文时输入的内容自动清空了。

解决:可以在切换完密文的方法中重新填充内容完成
if (self.tfPassword.secureTextEntry) {
    [self.tfPassword insertText:self.tfPassword.text];
}

⚠️注意:
如果是一个页面有多个UITextField,那就要加上代理方法来处理了。

#pragma mark - UITextFieldDelegate
- (void)textFieldDidBeginEditing:(UITextField *)textField {
if (textField == self.tfPassword && self.tfPassword.secureTextEntry) {
    [self.tfPassword insertText:self.tfPassword.text];
  }
}

第二个问题:从密文切换到明文后,光标位置停留在密文最后的位置,密文的每个字符宽度比明文字符宽度大时,会很难看。

解决:可以在切换方法中,加上以下代码来处理
NSString *tmpPwd = self.tfPassword.text;
self.tfPassword.text = nil;
self.tfPassword.secureTextEntry = !self.tfPassword.secureTextEntry;
self.tfPassword.text =  tmpPwd;  
上一篇 下一篇

猜你喜欢

热点阅读