1.項(xiàng)目中經(jīng)常遇到密碼需要明文,密文切換的樣式,如下圖:
login.png
2.切換過程中,會(huì)在10以下的系統(tǒng)會(huì)出現(xiàn)幾個(gè)問題,1.出現(xiàn)空格,光標(biāo)位置錯(cuò)亂,2.字體變化,3.密文時(shí)輸入文字清空,下面分別列舉出解決辦法:
3.1 第一種問題解決辦法,先保存文本,再清空輸入,再賦值,就解決了空格問題
- (void)eyesBtnClick:(UIButton *)btn
{
self.textField.secureTextEntry = btn.selected;
btn.selected = !btn.selected;
NSString *oriText = self.textField.text;
self.textField.text = @"";
self.textField.text = oriText;
}
3.2 字體變化問題,重新設(shè)置一下字體,保持和現(xiàn)在設(shè)置的一樣
- (void)eyesBtnClick:(UIButton *)btn
{
self.textField.secureTextEntry = btn.selected;
btn.selected = !btn.selected;
NSString *oriText = self.textField.text;
self.textField.text = @"";
self.textField.text = oriText;
self.textField.font = [UIFont fontWithName:@"HelveticaNeue" size:16];
}
3.3 密文輸入清空問題,在代理里面,加多一個(gè)判斷能避免密文清空的問題,如下:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
//明文切換密文后避免被清空
NSString *toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string];
if (textField == self.textField && textField.isSecureTextEntry) {
textField.text = toBeString;
return NO;
}
return YES;
}