美文网首页
UITextField有个坑爹的secureTextEntry

UITextField有个坑爹的secureTextEntry

作者: 聪明的笨白 | 来源:发表于2016-09-06 16:06 被阅读202次

在日常开发中,有时候我们需要对textfield的输入内容进行隐藏toggle处理(特别是在登录注册模块),这时候使用苹果UITextField自带的属性secureTextEntry,就可以很方便的做到这点,但是这个属性实际的效果非常不尽人意,在改变这一属性的时候,可能会发生以下情况:

  1. 字体font改变
  2. 文字大小改变
  3. 隐藏内容的占位圆点大小改变
  4. 光标位置不准确

最佳解决方案:

         BOOL wasFirstResponder;
         if ((wasFirstResponder = [textField isFirstResponder])) {
             [textField resignFirstResponder];
         }
         
         // 这里改变该属性最好使用以下的方法,而不要使用类似[textField setSecureTextEntry:![textField isSecureTextEntry]]的方式,因为会改变占位文字的大小
         textField.secureTextEntry = !textField.secureTextEntry;

         if (wasFirstResponder) {
             [textField becomeFirstResponder];
         }

通过代码可以看出,出现上述四点问题的关键就在于textField是否处在第一响应者上,当处在第一响应者的时候,如果通过代码改变secureTextEntry的值,就会发生问题。

遗留bug:当文本框处于secureTextEntry == Yes的状态时,第一次成为第一响应者字体(占位圆点)会变小。

相关文章

网友评论

      本文标题:UITextField有个坑爹的secureTextEntry

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