IOS开发-六位密码输入框
- 现在app中时常用到六位密码,而这种密码输入框则需要我们自己来编写。
1、UITextField定义
- (UITextField *)pswTF{
if (!_pswTF) {
_pswTF = [[UITextField alloc] init];
_pswTF.delegate = self;
_pswTF.keyboardType = UIKeyboardTypeNumberPad;
//添加对输入值的监视
[_pswTF addTarget:self action:@selector(valueChange:) forControlEvents:UIControlEventEditingChanged];
}return _pswTF;
}
2、添加点击事件,使点击输入框开启键盘
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(click)];
[self addGestureRecognizer:tap];
3、添加label与分割线的绘制
#pragma mark - 设置UI
- (void)initUI{
self.backgroundColor = [UIColor whiteColor];
[self addSubview:self.pswTF];
//添加6个label
for (int i = 0;
i < 6;
i++) {
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(i*self.frame.size.width/6.0, 0, self.frame.size.width/6.0, self.frame.size.height)];
label.textAlignment = NSTextAlignmentCenter;
label.tag = 100 + i;
[self addSubview:label];
}//设置边框圆角与颜色
self.layer.masksToBounds = YES;
self.layer.cornerRadius = 10.0;
self.layer.borderColor = [UIColor blackColor].CGColor;
self.layer.borderWidth = 2;
}//划线
- (void)drawRect:(CGRect)rect{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2);
//设置分割线颜色
CGContextSetRGBStrokeColor(context, 0, 0, 0, 1);
CGContextBeginPath(context);
//5条分割线绘制
for (int i = 0;
i < 5;
i++){
CGContextMoveToPoint(context, self.frame.size.width/6.0 * (i + 1), 0);
CGContextAddLineToPoint(context,self.frame.size.width/6.0 * (i + 1) , self.frame.size.height);
}CGContextStrokePath(context);
}
4、监控textfield值,改变label
- (void)valueChange:(UITextField *)textField{
NSString *text = textField.text;
if (text.length <= 6){//当输入小于6的时候
for (int i = 0;
i < 6;
i++) {
//通过tag获取label
UILabel *label = (UILabel *)[self viewWithTag:100 + i];
//更改label值
if (i < text.length) {
label.text = @"*";
}
else{
label.text = @"";
}
}
}
else{ //输入值长度大于6时,截取字符串
textField.text = [text substringWithRange:NSMakeRange(0, 6)];
}NSLog(@"%@",textField.text);
}
【IOS开发-六位密码输入框】5、返回密码
- (NSString *)getPsw{
return self.pswTF.text;
}
- 这样六位密码输入框就实现了,具体可以查看我的DEMO
推荐阅读
- 深入理解Go之generate
- 2020-04-07vue中Axios的封装和API接口的管理
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- iOS中的Block
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- 2019-08-29|2019-08-29 iOS13适配那点事
- Hacking|Hacking with iOS: SwiftUI Edition - SnowSeeker 项目(一)
- iOS面试题--基础
- 我的软件测试开发工程师书单
- echart|echart 双轴图开发