使用UITextField从明文切换到密文后,输入任何值都会将密文的输入先清空。这个是UITextField默认的设置,好像也没有一个属性值可以直接控制吧。不过在代理里面,加多一个判断也能避免密文清空的问题

第一种方案:通过定制UITextField的代理方法解决

关键代码

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {// 明文切换密文后避免被清空// 是密码框 并且 是密文状态if (textField == self.tf && textField.isSecureTextEntry) {NSString *secureString = [textField.text stringByReplacingCharactersInRange:range withString:string];textField.text = secureString;// 返回NO表示 舍弃 通过这个代理方法 改变 UITextField的文本内容return NO;}return YES;
}

第二种方案:通过在同一个位置放置两个UITextField来解决(这个方法比较取巧)

关键代码

- (void)makeSecure:(BOOL)secure {if (secure) {CGRect rect = self.tf.frame;NSString *ph = self.tf.placeholder;NSString *text = self.tf.text;[self.tf removeFromSuperview];self.tf = nil;// 这里调用的gen...的方法是用来封装生成相同的UITextField[self genTFWithFrame:rect placeHodler:ph secureTextEntry:secure];self.tf.text = text;[self.tf becomeFirstResponder];}else {self.tf.secureTextEntry = secure;}
}- (void)genTFWithFrame:(CGRect)rect placeHodler:(NSString *)placeHolder secureTextEntry:(BOOL)secureTextEntry {UITextField *tf = nil;if (secureTextEntry) {tf = [[CustomSecureTextField alloc] initWithFrame:rect];}else {tf = [[UITextField alloc] initWithFrame:rect];}[self.bgView addSubview:tf];tf.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeHolder attributes:@{NSForegroundColorAttributeName:kColorWithHex(0x999999)}];tf.secureTextEntry = secureTextEntry;_tf = tf;tf.delegate = self;
}@interface CustomSecureTextField : UITextField@end@implementation CustomSecureTextField- (BOOL)becomeFirstResponder {if (self.isFirstResponder) {return YES;}[super becomeFirstResponder];if (!self.isSecureTextEntry) {return YES;}[self insertText:self.text];return YES;
}@end

iOS UITextField 明文密文切换时密文被清空问题相关推荐

  1. 快应用如何实现密码明文和密文切换显示

    很多应用提供了账号登录.注册功能,在输入密码时,开发者为了安全性,当用户输入密码时,一般都显示--的密文.但是,这个体验也给用户造成了不便,用户不知道当前输入的字符是否是自己期望的,也无法知道当前输入 ...

  2. UITextField 文本字段控件 -- IOS (解决键盘遮住View及密文設定的问题)(实例)

    进入本文之前建议你认真读一读我的另一篇博文:UIControl IOS控件编程 这样会起到事半功倍效果. 为什么要看另一篇关于UIControl的文章呢?因为UITextField继承自UIContr ...

  3. 密码密文 android,Android密码明文密文切换

    Android密码明文密文切换,注册的时候用的比较多. 效果动画: MainActivity package com.example.shen.passwordtest; import android ...

  4. 什么叫明文,什么叫密文、密码、密钥,为什么在数据库里不采用明文保存密码?

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 密码概述 明文概述 密文概述? 什么是密钥? 加密的手段(以下三种) MD5加密 DES加密 RSA加密 密码概述 密码学中 ...

  5. 统计DES算法在密钥、明文固定下对密文的影响

    统计DES算法在密钥.明文固定下对密文的影响 实验代码在这里:实验代码 实验目的 统计DES算法在密钥固定情况,输入明文改变1位.2位,...64位时.输出密文位数改变情况. 统计DES算法在明文固定 ...

  6. 解决iOS设备屏幕切换时页面造成的问题

    环境:IOS6~7 Safari 问题:iOS设备屏幕切换时可能会造成屏幕变大,出现左右间距等问题 解决方法: 头部加入 <meta name = "viewport" co ...

  7. android密码小眼睛,android 实现点击edittext的“小眼睛”切换明密文

    很多时候,我们为了用户的隐私安全,需要在密码输入的时候,显示密文.为了更好的用户体验,我们给用户提供了可以切换明密文的小图标(小眼睛) 先来看一下效果图: 这里我们可以有两种实现方式: 一. 布局文件 ...

  8. java的密文发送_Java密文加密方式(一)AES

    高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的).对称加密算法也就是加密和解密用相同的密钥,具体的加密流 ...

  9. iOS 自定义页面的切换动画与交互动画 By Swift

    iOS7之前,开发者为了寻求自定义Navigation Controller的Push/Pop动画,只能受限于子类化一个UINavigationController,或是用自定义的动画去覆盖它.但是随 ...

最新文章

  1. Fiddler使用总结一(使用Fiddler捕获手机所有http/https通信)
  2. 【USACO Mar08】 奶牛跑步 A-star k短路
  3. mac python3 安装mysqlclient
  4. 7.6~7.20集训总结(一)
  5. HarmonyOS之调试分析打印HiLog日志
  6. Hystrix简介及简单代码示例
  7. alibaba实习生代码大赛
  8. PowerTip of the Day-Finding Invalid Aliases
  9. 网络管理员&MCSE2003之2:使用虚拟机Vmware建立多电脑网络环境
  10. java多线程采集+线程同步-【多线程数据采集之四】
  11. ARP欺骗***技术及防护
  12. iPad和iPhone上的应用程序图标
  13. atitit.《金刚经》与it软件项目管理的启发 读后感attilax
  14. Android 极光各厂商配置
  15. vptr初始化语义学
  16. 华为交换机配置syslog发送_配置华为交换机推送syslog到日志服务器
  17. 计算机now函数,玩转NOW函数 日期时间随心变
  18. ImportError: cannot import name ‘_validate_lengths‘ from ‘numpy.lib.arraypad的解决方法(简单粗暴)
  19. 支付宝APP支付集成文档
  20. 华为手机便签有扫描的功能么

热门文章

  1. hdu 1597 二分查找
  2. Immersion 签署通过 IC 合作伙伴 Dongwoon Anatech 提供触感技术的协议
  3. python 生成md5
  4. [CFF认证]201409-3字符串匹配(C++)
  5. 浏览器渲染页面的原理
  6. CSA复习8 samba
  7. Trimble Real Works建筑点逆向造型入门到精通视频教程
  8. 手册和步骤书的区别是什么?
  9. pycharm 专业版
  10. A2B-Master电路设计方法