博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义安全文本输入符
阅读量:5741 次
发布时间:2019-06-18

本文共 3798 字,大约阅读时间需要 12 分钟。

hot3.png


<#content#>


                2016/1/27            23:42

#import "SVProgressHUD.h"// 暗文显示符#define ShowSecureString @"?"
/// 判断是否存了数据@property (nonatomic,assign) BOOL haveData;/// 获取textField@property (weak, nonatomic) IBOutlet UITextField *textField;/// 以什么暗文显示@property(nonatomic, copy) NSString *secureString;///记录文本框里面输入的内容@property(nonatomic, copy) NSString *contentString;#warning 注意!!! 文本框中的数据是暗文,真数据在contentString里#warning 注意!!! 文本框中的数据是暗文,真数据在contentString里#warning 注意!!! 文本框中的数据是暗文,真数据在contentString里- (IBAction)clickLogin:(id)sender {        // 判断输入的是否正确    if (![self.contentString isEqualToString:@"aa"]) {                [SVProgressHUD showErrorWithStatus:@"请输入\"aa\"" maskType:SVProgressHUDMaskTypeBlack];                return;    }            [SVProgressHUD showSuccessWithStatus:@"登陆成功" maskType:SVProgressHUDMaskTypeBlack];        // 存档    [self saveData];        }- (void)loadContent {        // 文本框 添加事件 (长度改变调用)    [self.textField addTarget:self action:@selector(changeTextField) forControlEvents:UIControlEventEditingChanged];        self.textField.delegate = self;        //让控件成为第一响应者    [self.textField becomeFirstResponder];    }// 必须实现 屏蔽点击 键盘 return- (BOOL)textFieldShouldReturn:(UITextField *)textField {        //NSLog(@"%s",__func__);    return NO;}#pragma mark - 因为用暗文替换,所以只有点X才调用此方法- (void)changeTextField {            self.textField.text = @"";        self.contentString = @"";    }#pragma mark -  自定义暗文显示符-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {        // 屏蔽 用户输入键盘上的空格    if ([string isEqualToString:@" "]) {                return NO;    }        if (self.contentString  ==  nil) {                self.contentString = @"";    }        //判断输入的 字符是否为 系统键盘的 delete 减号键    if (string.length  == 0 ) {                //去掉保存文本框的  最后一个字符        self.contentString  = [self.contentString  substringToIndex:self.contentString.length - 1];                //NSLog(@"%@",self.contentString);                return YES;    }        //拼接字符串 保存的文本框内容加上一个字符    self.contentString  = [self.contentString  stringByAppendingString:string];        self.secureString = @"";        /**     *  遍历文本框内容长度  拼接安稳   字符串多长  拼接多长     */    for (int i = 0; i < self.contentString.length ; i ++) {                self.secureString  = [self.secureString  stringByAppendingString:ShowSecureString];            }        self.textField.text  = self.secureString;        return NO;    }#pragma mark - 数据存储- (void)saveData {        //保存开关状态和用户信息    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];        self.haveData = YES;        //保存 BOOL 类型数据    [userDefaults setBool:self.haveData forKey:@"haveData"];        //保存 NSString 类型数据    [userDefaults setObject:self.contentString forKey:@"contentString"];        //立即写入 Ios8之前必须调用    [userDefaults synchronize];    }/// 读数据- (void)loadData {        //读取数据    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];        self.haveData = [userDefaults                     objectForKey:@"haveData"];        if (self.haveData == NO) {                // 代表没存数据        return;    }        self.contentString = [userDefaults objectForKey:@"contentString"];        self.textField.text  = ShowSecureString;        // 把 密码文本框 替换    for (int i = 0; i < self.contentString.length - 1; ++i) {                self.textField.text = [self.textField.text stringByAppendingString:ShowSecureString];            }    }#pragma mark - 加载视图- (void)loadView {        [super loadView];        // 设置整个控制器的背景图片    self.view.layer.contents = (__bridge id _Nullable)([UIImage imageNamed:@"background"].CGImage);        [self loadData];}

Demo:


2016/1/22                    12:13

更新日志:

①:

解决如果存储进偏好设置,

运行显示的就不是暗文了的问题

②:

解决点"X",数据残留问题

121315_2a2R_2613440.png

demo地址:

 

 

转载于:https://my.oschina.net/codeismygirl/blog/603335

你可能感兴趣的文章
Java判断是否为垃圾_Java GC如何判断对象是否为垃圾
查看>>
多项式前k项和java_多项式朴素贝叶斯softmax改变
查看>>
java数组只能交换0下标和n_编程练习-只用0交换排序数组
查看>>
java的maxrow_聊聊pg jdbc statement的maxRows参数
查看>>
centos7安装mysql视频教程_centos7安装mysql(完整)
查看>>
php图片赋值,php如何优雅地赋值
查看>>
dz.27z.co index.php,dz7.2 伪静态规则
查看>>
php字符串解析xml文件,PHP通过DOM解析XML文件或者xml字符串_PHP教程
查看>>
matlab corr2原码,Ncorr-二维数字图像校正软件
查看>>
mysql增量,MySQL完全、增量的备份与恢复
查看>>
matlab程序复制出现乱码,matlab代码或中文复制到word就变成乱码怎么办?
查看>>
java writer append,Java StringWriter append()方法
查看>>
动态矩阵 matlab代码,动态矩阵控制
查看>>
用php实现一个音频播放的代码,用VBS实现音乐播放的多个代码小结
查看>>
larry oracle aws,AWS成为靶子 甲骨文掐住亚马逊的七寸猛打
查看>>
linux原生迅雷文本模式,ubuntu 下运行原生的迅雷
查看>>
网易 linux性能优化工程师,云计算人才必须掌握什么 怎么学Linux性能优化
查看>>
linux系统真正优势学习方法,Linux系統真正的優勢以及學習方法,linux優勢學習方法...
查看>>
上海师范大学c语言考卷答案,上海师范大学C语言期末考试标准试卷.doc
查看>>
cof文件在C语言中怎么引入,COF文件擴展名: 它是什麼以及如何打開它?
查看>>