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(@"输入完毕");
    }
}

效果图

效果图.gif

demo连接:

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,046评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,194评论 4 61
  • 分类: 使用消息队列能够使关键组件顶住增长的访问压力,而不是因为超出负荷的请求而完全崩溃。 消息队列还有可恢复性、...
    钟离依云1103阅读 1,885评论 0 0
  • 据说,2016年6-7月是传说中的猴年马月!亲们,那些说过的要等到猴年马月才做的事是不是该完成了?!
    酒鬼阿辽阅读 1,241评论 0 0
  • 一次借班上课的观摩活动中,提供各种不同纸张让中班幼儿玩纸飞机,感受各种各样的纸张。由于是周一,没能事先和孩子熟悉,...
    杨凯红a阅读 1,228评论 0 3