一般密碼都會有明文和密文的顯示方式,但是常規(guī)調(diào)用UITextField的secureTextEntry做,會有兩個常見的問題。
第一個問題:切換密文
secureTextEntry后,再次輸入內(nèi)容,明文時輸入的內(nèi)容自動清空了。
解決:可以在切換完密文的方法中重新填充內(nèi)容完成
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;