iOS UITextField 明/密文切换的一些坑

作者: 天蝎洋芋 | 来源:发表于2016-06-16 15:10 被阅读2215次

最近在项目中需要使用UITextField作为密码输入框,并进行明文/密文切换。在进行代码编写的时候,遇到了一些问题。现将这些问题记录下来,供大家参考。

NO.1 明/密文切换时,文本长度会改变,而光标的位置不跟随文本的改变而改变。

密文状态 明文状态

解决方法1: 点击按钮切换明/密文时,让UITextField变成第一响应。

[self.textField becomeFirstResponder];

解决方法2:点击按钮切换明/密文时,保存UITextField的text属性值。将其置空再赋值。

NSString*textStr =self.textField.text;

self.textField.text=@"";

self.textField.text= textStr;

使用后切换到明文状态时

NO.2 明/密文切换时,文本字体会改变。

正常状态下的文本显示 从密文切换到明文的文本显示

解决方法:点击按钮切换明/密文时,设置UITextField字体为原字体。

self.textField.font=nil;

self.textField.font= [UIFontsystemFontOfSize:16];

NO.3 UITextField经过 密文->明文->密文 的过程后,再输入之前的文本会被清空。

解决方法:设置UITextField的delegate,在下面的代理方法中控制文本的改变。

- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string

- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string{

NSString*allStr = [textField.textstringByReplacingCharactersInRange:rangewithString:string];

if(textField.isSecureTextEntry==YES) {

textField.text= allStr;

returnNO;

}

returnYES;

}

结尾附上Demo地址:https://github.com/wfalloc/UITextFieldBug.git

相关文章

网友评论

  • 579971f7aa61:明密文切换后,密码圆点会变得很大,请问如何解决。
    Rickie_Lambert:@不要猜_w 好吧, 这好像 就是 苹果的 bug
    579971f7aa61:@Mr_Rain 还没有......
    Rickie_Lambert:@不要猜_w 这为朋友 这个 问题你 解决了吗?? 同求, 密码圆点切换的时候 会有 大小不一样的切换
  • 傲视众生的冰块:可以可以,很实用
  • 章鱼paul帝:还有一个问题是密文切换明文时 键盘样式会变成常用键盘 而不是安全键盘
    ZhangCc_:我也遇到这个问题,你们解决了吗?
    鬼丶白:我也遇到这个问题了,请问您那边解决了吗?0.0
    41ff1568a683:@章鱼paul帝 我也遇到这个问题了,请问您那边解决了吗?
  • 王大虾34:有用,赞:+1:🏻
  • 常斯温:这个真心不错。赞一个,前几个问题都碰到了。
  • 6991a5a482e5:不错不错,收藏了
    天蝎洋芋:@dxykevin 谢谢!
  • af4e8a35bc89:感觉是个特实用的demo 虽然没遇到过这种需求 。收藏了
    天蝎洋芋:@日照江湖美 非常感谢!

本文标题:iOS UITextField 明/密文切换的一些坑

本文链接:https://www.haomeiwen.com/subject/ydaedttx.html