iOS UITextField 明文密文切换时密文被清空问题
使用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 明文密文切换时密文被清空问题相关推荐
- 快应用如何实现密码明文和密文切换显示
很多应用提供了账号登录.注册功能,在输入密码时,开发者为了安全性,当用户输入密码时,一般都显示--的密文.但是,这个体验也给用户造成了不便,用户不知道当前输入的字符是否是自己期望的,也无法知道当前输入 ...
- UITextField 文本字段控件 -- IOS (解决键盘遮住View及密文設定的问题)(实例)
进入本文之前建议你认真读一读我的另一篇博文:UIControl IOS控件编程 这样会起到事半功倍效果. 为什么要看另一篇关于UIControl的文章呢?因为UITextField继承自UIContr ...
- 密码密文 android,Android密码明文密文切换
Android密码明文密文切换,注册的时候用的比较多. 效果动画: MainActivity package com.example.shen.passwordtest; import android ...
- 什么叫明文,什么叫密文、密码、密钥,为什么在数据库里不采用明文保存密码?
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 密码概述 明文概述 密文概述? 什么是密钥? 加密的手段(以下三种) MD5加密 DES加密 RSA加密 密码概述 密码学中 ...
- 统计DES算法在密钥、明文固定下对密文的影响
统计DES算法在密钥.明文固定下对密文的影响 实验代码在这里:实验代码 实验目的 统计DES算法在密钥固定情况,输入明文改变1位.2位,...64位时.输出密文位数改变情况. 统计DES算法在明文固定 ...
- 解决iOS设备屏幕切换时页面造成的问题
环境:IOS6~7 Safari 问题:iOS设备屏幕切换时可能会造成屏幕变大,出现左右间距等问题 解决方法: 头部加入 <meta name = "viewport" co ...
- android密码小眼睛,android 实现点击edittext的“小眼睛”切换明密文
很多时候,我们为了用户的隐私安全,需要在密码输入的时候,显示密文.为了更好的用户体验,我们给用户提供了可以切换明密文的小图标(小眼睛) 先来看一下效果图: 这里我们可以有两种实现方式: 一. 布局文件 ...
- java的密文发送_Java密文加密方式(一)AES
高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的).对称加密算法也就是加密和解密用相同的密钥,具体的加密流 ...
- iOS 自定义页面的切换动画与交互动画 By Swift
iOS7之前,开发者为了寻求自定义Navigation Controller的Push/Pop动画,只能受限于子类化一个UINavigationController,或是用自定义的动画去覆盖它.但是随 ...
最新文章
- Fiddler使用总结一(使用Fiddler捕获手机所有http/https通信)
- 【USACO Mar08】 奶牛跑步 A-star k短路
- mac python3 安装mysqlclient
- 7.6~7.20集训总结(一)
- HarmonyOS之调试分析打印HiLog日志
- Hystrix简介及简单代码示例
- alibaba实习生代码大赛
- PowerTip of the Day-Finding Invalid Aliases
- 网络管理员&MCSE2003之2:使用虚拟机Vmware建立多电脑网络环境
- java多线程采集+线程同步-【多线程数据采集之四】
- ARP欺骗***技术及防护
- iPad和iPhone上的应用程序图标
- atitit.《金刚经》与it软件项目管理的启发 读后感attilax
- Android 极光各厂商配置
- vptr初始化语义学
- 华为交换机配置syslog发送_配置华为交换机推送syslog到日志服务器
- 计算机now函数,玩转NOW函数 日期时间随心变
- ImportError: cannot import name ‘_validate_lengths‘ from ‘numpy.lib.arraypad的解决方法(简单粗暴)
- 支付宝APP支付集成文档
- 华为手机便签有扫描的功能么