iOS实现类似支付时的输入密码

原理

底部一个UITextField设置为透明,在上面添加自定义要显示的子视图,通过监听输入改变来现实或隐藏上面添加的控件

核心代码


- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSLog(@"变化%@", string);
    if([string isEqualToString:@"\n"]) {
        //按回车关闭键盘
        [textField resignFirstResponder];
        return NO;
    } else if(string.length == 0) {
        //判断是不是删除键
        return YES;
    }
    else if(textField.text.length >= self.count) {
        //输入的字符个数大于6,则无法继续输入,返回NO表示禁止输入
        NSLog(@"输入的字符个数大于%ld,忽略输入",self.count);
        return NO;
    } else {
        return YES;
    }
}

/**
 *  重置显示的点
 */

//重写这个方法可以实现
- (void)textFieldDidChange:(UITextField *)textField
{
    NSLog(@"%@", textField.text);
    for (UIView *dotView in self.dotArray) {
        dotView.hidden = YES;
    }
    for (int i = 0; i < textField.text.length; i++) {
        ((UIView *)[self.dotArray objectAtIndex:i]).hidden = NO;
    }
    if (textField.text.length == self.count) {
        NSLog(@"输入完毕");
    }
}

效果图

iOS实现类似支付时的输入密码_第1张图片
效果图.gif

demo连接:

https://pan.baidu.com/s/1dEItzln

你可能感兴趣的:(iOS实现类似支付时的输入密码)