iOS实现记住密码功能

来源:互联网 发布:网卡mac地址修改 编辑:程序博客网 时间:2024/05/19 05:40

自己发的第一篇博客,想要介绍一些开发过程中的技术问题,里边有借鉴别人的部分和自己的修改理解,无论怎样,希望对大家有帮助。
首先,要明白iOS中没有checkbox,所以想实现该效果需要用两个一样的照片,一个有勾,一个没有,使其效果像checkbox一样。
具体的实现如下:
1.找两个图片,并分别命名为:check_off.png和check_on.png
2.声明一个可以存放图片的UIImageView,并设置其属性
3.设置手势,判断其是否需要记住密码
4.定义读写.plist文件的操作
另外注意一点,此处的.plist文件不是自己定义的而是在沙盒中的,想看看有没有写进去可以把文件的路径:NSLog(@”文件路径:%@”,path)出来,然后查找文件即可。

代码如下:

.h文件
BOOL recordPwd;

.m文件

@synthesize recordBtn;
recordBtn = [[UIImageViewalloc]init];//用图片做的checkbox
recordBtn.frame =CGRectMake(iconWidth-100,245,20,20);
recordBtn.userInteractionEnabled =YES;

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(recoredBtnClick)];//添加了一个手势,单击触发事件
tapGesture.numberOfTapsRequired =1;//点击一下
[recordBtnaddGestureRecognizer:tapGesture];//这里注意是在UIImageView上添加手势
[selfreadUserInfoFromFile];//在图片初始化之前先读取plist文件,判断recordPwd

if (recordPwd) {    recordBtn.image = [UIImageimageNamed:@"check_on.png"];}else{    recordBtn.image = [UIImageimageNamed:@"check_off.png"];}[self.viewaddSubview:recordBtn];
  • (void)recoredBtnClick//点击是否记住密码
    {

    if (recordPwd) {
    recordBtn.image = [UIImageimageNamed:@”check_off.png”];
    recordPwd = NO;
    }
    else{
    recordBtn.image = [UIImageimageNamed:@”check_on.png”];
    recordPwd =YES;
    }
    [selfwritePasswordToFile];
    }

//把是否记住密码信息写进userRemember.plist文件
- (void)writePasswordToFile
{

NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);NSString *documentsDirectory = [pathsobjectAtIndex:0];NSString *path = [documentsDirectorystringByAppendingPathComponent:@"userRemember.plist"];NSMutableDictionary *data = [[NSMutableDictionary alloc]init];//字典初始化,注意这里的init方法,跟-(void)readUserInfoFromFile方法中的字典初始化方法不同。if (nameTextField.text.length != 0||pswTextField.text.length != 0) {//如果输入不为空    [data setObject:nameTextField.text forKey:USERNAME];//用户名和密码存入字典,这里的key用了宏定义,其实@"recordPwd"也可以用,在文中多次使用比较省事    [data setObject:pswTextField.text forKey:PASSWORD];}[data setObject:[NSNumbernumberWithBool:recordPwd] forKey:@"recordPwd"];[data writeToFile:path atomically:YES];NSLog(@"是否记住密码信息==%@",data);

}

  • (void)readUserInfoFromFile//从userRemember.plist读取数据
    {
    NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *documentsDirectory = [pathsobjectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@”userRemember.plist”];
    //以上的三句话获取沙盒中user.plist的路径。
    NSLog(@”文件路径:%@”,path);
    NSMutableDictionary *saveStock = [[NSMutableDictionary alloc]initWithContentsOfFile:path];
    //从该路径读取文件,注意这里是读取,跟创建plist的init方法不同,看下面就知道了
    recordPwd = [[saveStock objectForKey:@”recordPwd”]boolValue];
    //@”recordPwd”是一个key,存到字典何从字典中取值都要用到
    if (!recordPwd)
    {
    nameTextField.text =@”“;
    pswTextField.text = @”“;
    //[saveStock removeAllObjects];//移除字典内所有元素
    }
    else{
    nameTextField.text = [saveStockobjectForKey:USERNAME];
    pswTextField.text = [saveStockobjectForKey:PASSWORD];
    [pswTextField setSecureTextEntry:YES];//密码设置为暗文
    }
    NSLog(@”nameTextField.text=%@,pswTextField.text=%@”,nameTextField.text,pswTextField.text);
    NSLog(@”读取saveStock=%@”,saveStock);

}

原创粉丝点击