实现支付宝的修改支付密码的功能

先附一张做出的效果图吧

这个是项目中钱包部分的功能,先说下页面的构建,我这里使用的是六个UITextField组成的密码框,这六个主要是显示部分,为了后面的显示方面,这里把这六个密码框的tag值依次设为1,2,3,4,5,6。

代码中再写一个UITextField,把它隐藏掉,并调出键盘,来控制输入的内容,代码如下:

self.textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 200, 30)];

    self.textField.hidden = YES;

    self.textField.keyboardType = UIKeyboardTypeNumberPad;

    [self.textField becomeFirstResponder];

    [self.textField addTarget:self action:@selector(textChange:) forControlEvents:UIControlEventEditingChanged];

    [self.view addSubview:self.textField];

    

    for (int i = 0; i < 6; i++)

    {

        UITextField * pswTF = [self.view viewWithTag:i+1];

        pswTF.secureTextEntry = YES;

        pswTF.layer.borderColor = [[UIColor grayColor]CGColor];

        pswTF.layer.borderWidth = 1;

        pswTF.delegate = self;

    }

 当输入框的内容改变时,就调用方法,将输入的内容分散显示

#pragma mark - 文本框内容改变

- (void)textChange:(UITextField *)textField {

    NSString *password = textField.text;

    if (password.length > 6) {

        textField.text = [password substringToIndex:6];

        return;

    }

    

    for (int i = 0; i < 6; i++)

    {

        UITextField *pwdTextField= [self.view viewWithTag:i+1];

        if (i < password.length) {

            NSString *pwd = [password substringWithRange:NSMakeRange(i, 1)];

            pwdTextField.text = pwd;

        } else {

            pwdTextField.text = nil;

        }

        

    }

    if (password.length == 6)

    {

        [textField resignFirstResponder];//隐藏键盘

    }

}

当点击下一步时,这里对密码的复杂度做了判断,当不符合要求时需要将密码框的内容清空,重新输入

-(void)clearPswTest

{

    self.textField.text = @"";

    for (int i = 0; i < 6; i++)

    {

        UITextField *pwdTextField= [self.view viewWithTag:i+1];

        pwdTextField.text = @"";

    }

    [self.textField becomeFirstResponder];

}

这里只说下大概的处理思路,具体的demo请在这里下载查看。

http://code.cocoachina.com/view/133653

posted @ 2016-12-08 16:21  梅子~  阅读(247)  评论(0编辑  收藏  举报