使用textfield根据内容显示密码强度
来源:互联网 发布:手机淘宝充值怎么退款 编辑:程序博客网 时间:2024/04/30 15:21
现在APP中经常需要注册登录操作,在注册时设置密码会需要根据输入的内容来显示密码强度。最近在项目中需要处理这样一种情况。
在网上也有一些处理方法,但是看了都不是很满意,所以决定还是自己写。
首先实现主要是从两个方面开始。
1.如何将密码强度与输入内容联系在一起
这个需要结合使用textfield 的代理方法
2.如何判断密码强度
这个是逻辑问题
// 0.先判断输入的长度是不是大于6
// 1.如果小于6为则显示密码强度太低提示
// 2.如果大于6再判断其组成成分
// 3.如果组成全部是字母,数字,符号的某一种,则判断为低强度
// 4.如果组成是上述中的两种则判断为中强度
// 5.如果组成是上述中的三种则判断为高强度
具体代码实现:
@interface ViewController ()<UITextFieldDelegate>
{
BOOL _isback; // 如果还有其他的textfield,这个时候需要这个变量,保证密码强度显示正常。
UIImageView *_remindImage; // 密码强度图片视图
}
@end
- (void)viewDidLoad {
UITextField *tf = [[UITextFieldalloc]initWithFrame:CGRectMake(20,50,200,50)];
_remindImage = [[UIImageViewalloc]initWithFrame:CGRectMake(10,CGRectGetMaxY(tf.frame)+30,300,10)];
[self.viewaddSubview:_remindImage];
tf.borderStyle =UITextBorderStyleRoundedRect;
tf.placeholder =@"测试密码长度";
tf.secureTextEntry =YES; // 设置密码保护,这一步是必须的,这样能够保证字母一个个的输入,及时判断
tf.delegate =self;
[self.viewaddSubview:tf];
}// 这里需要textfield 的两个代理方法
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
_isback =YES;
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (_isback)
{
_remindImage.hidden =YES;
_isback =NO;
}else
{
NSString *joinpw =nil;
NSMutableString *deleStr = [textField.textmutableCopy];
if ([stringisEqualToString:@""])//当后退删除密码时处理
{
[deleStr deleteCharactersInRange:NSMakeRange(deleStr.length-1,1)];
joinpw = deleStr;
}else // 当还在增加密码长度时处理
{
joinpw = [textField.textstringByAppendingString:string];
}
if (joinpw.length >5)
{
PASSWORDSTRENGTH pasw = [selfanalyzePassWorldWith:joinpw];
switch (pasw)
{
caseLOWPASSWORD:
{
_remindImage.hidden =NO;
_remindImage.image = [UIImageimageNamed:@"PsdStrength_Weak.png"];
}
break;
caseMIDDLEPASSWORD:
{
_remindImage.hidden =NO;
_remindImage.image = [UIImageimageNamed:@"PsdStrength_Fair.png"];
}
break;
caseHIGHPASSWORD:
{
_remindImage.hidden =NO;
_remindImage.image = [UIImageimageNamed:@"PsdStrength_Good.png"];
}
break;
default:
break;
}
}else
{
_remindImage.hidden =YES;
}
}
returnYES;
}
// 解析密码的逻辑
- (PASSWORDSTRENGTH)analyzePassWorldWith:(NSString *)password
{
BOOL isnum =NO;
BOOL isalph =NO;
BOOL isSymbol =NO;
constchar *pwch = [passwordcStringUsingEncoding:NSUTF8StringEncoding];
for (NSInteger i=0; i<strlen(pwch); i++)
{
// 判断的逻辑原理是根据字符的ASCII 编码值
char s = pwch[i];
if (s >47 && s <58)
{
isnum = YES;
}
elseif ((s >64 && s <91) ||(s >96 && s <123)) {
isalph = YES;
}else
{
isSymbol = YES;
}
}
if ((isnum && isalph && !isSymbol) || (isnum && isSymbol && !isalph) || (isalph && isSymbol && !isnum))
{
returnMIDDLEPASSWORD;
}elseif (isnum && isalph && isSymbol)
{
returnHIGHPASSWORD;
}else
{
returnLOWPASSWORD;
}
}
菜鸟原创,如有雷同,纯属巧合,如有错误,欢迎指正
- 使用textfield根据内容显示密码强度
- Asp.Net 密码强度显示
- as3 TextField 宽度根据文本内容自适应
- 密码强度显示 仿Google的
- 密码强度显示 仿Google的
- android判断密码强度,带进度显示
- JQuery 根据所设密码自动判断其强度
- 密码强度
- 使用JavaScript实现判断密码强度
- 使用jQuery插件-passwordStrength检查密码强度
- 使用JS验证密码的强度
- 如何使用命令行生成高强度密码
- 如何使用命令行生成高强度密码
- 如何使用命令行生成高强度密码
- 如何使用命令行生成高强度密码
- 如何使用命令行生成高强度密码
- 如何使用命令行生成高强度密码
- js实现密码强度验证(显示强度,仿CSDN注册页面的密码验证)
- gradle配置教程
- 变治法
- PHP面向对象1.4 封装性
- protocol isis issues(续1)
- (总结)Nginx配置文件nginx.conf中文详解
- 使用textfield根据内容显示密码强度
- 协议栈中配置引脚
- poj2186
- SparkSQL(一)
- goto语句语法
- TCP协议的KeepAlive机制与HeartBeat心跳包
- hdu1597
- 【CODEFORCES】 B. Friends and Presents
- 神经网络和机器学习基础入门分享