// // QXChirldModeView.m // QXLive // // Created by 启星 on 2025/5/12. // #import "QXPasswordView.h" CGFloat labelWith = 50; CGFloat labelHeight = 63; @interface QXPasswordView() @property(nonatomic,strong)UILabel *titleLabel; @property(nonatomic,strong)UIButton *forgotBtn; @property(nonatomic,strong)UITextField *textField; @property(nonatomic,strong)UILabel *label1; @property(nonatomic,strong)UILabel *label2; @property(nonatomic,strong)UILabel *label3; @property(nonatomic,strong)UILabel *label4; @end @implementation QXPasswordView - (instancetype)initWithFrame:(CGRect)frame type:(QXPasswordViewType)type { self = [super initWithFrame:frame]; if (self) { [self initSubviews]; [self setType:type]; } return self; } - (instancetype)init { self = [super init]; if (self) { [self initSubviews]; } return self; } -(void)initSubviews{ self.titleLabel = [[UILabel alloc] init]; self.titleLabel.textColor = QXConfig.textColor; self.titleLabel.font = [UIFont boldSystemFontOfSize:16]; [self addSubview:self.titleLabel]; [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(self); make.top.equalTo(self).offset(30); make.height.mas_equalTo(24); }]; self.label1 = [[UILabel alloc] init]; [self setCustomLabel:self.label1]; [self addSubview:self.label1]; self.label2 = [[UILabel alloc] init]; [self setCustomLabel:self.label2]; [self addSubview:self.label2]; self.label3 = [[UILabel alloc] init]; [self setCustomLabel:self.label3]; [self addSubview:self.label3]; self.label4 = [[UILabel alloc] init]; [self setCustomLabel:self.label4]; [self addSubview:self.label4]; [self.label2 mas_makeConstraints:^(MASConstraintMaker *make) { make.right.equalTo(self.mas_centerX).offset(-8); make.size.mas_equalTo(CGSizeMake(labelWith, labelHeight)); make.top.equalTo(self.titleLabel.mas_bottom).offset(30); }]; [self.label3 mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.mas_centerX).offset(8); make.size.mas_equalTo(CGSizeMake(labelWith, labelHeight)); make.top.equalTo(self.label2); }]; [self.label1 mas_makeConstraints:^(MASConstraintMaker *make) { make.right.equalTo(self.label2.mas_left).offset(-16); make.size.mas_equalTo(CGSizeMake(labelWith, labelHeight)); make.top.equalTo(self.label2); }]; [self.label4 mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.label3.mas_right).offset(16); make.size.mas_equalTo(CGSizeMake(labelWith, labelHeight)); make.top.equalTo(self.label2); }]; self.textField = [[UITextField alloc] init]; self.textField.delegate = self; self.textField.font = [UIFont systemFontOfSize:1]; self.textField.keyboardType = UIKeyboardTypeNumberPad; self.textField.returnKeyType = UIReturnKeyDone; self.textField.textColor = [UIColor clearColor]; self.textField.userInteractionEnabled = YES; // [self.textField addTarget:self action:@selector(textDidChange:) forControlEvents:(UIControlEventEditingChanged)]; [self insertSubview:self.textField atIndex:0]; [self.textField mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.centerY.equalTo(self.label1); make.width.height.mas_equalTo(1); }]; // self.forgotBtn = [[UIButton alloc] init]; // [self.forgotBtn setTitleColor:QXConfig.themeColor forState:(UIControlStateNormal)]; // self.forgotBtn.titleLabel.font = [UIFont systemFontOfSize:12]; // [self.forgotBtn setTitle:[NSString stringWithFormat:@"%@?%@",QXText(@"忘记密码"),QXText(@"请联系客服")] forState:(UIControlStateNormal)]; // [self.forgotBtn addTarget:self action:@selector(forgotAction) forControlEvents:(UIControlEventTouchUpInside)]; // [self addSubview:self.forgotBtn]; // [self.forgotBtn mas_makeConstraints:^(MASConstraintMaker *make) { // make.top.equalTo(self.label1.mas_bottom).offset(10); // make.height.mas_equalTo(38); // make.centerX.equalTo(self); // }]; } -(void)forgotAction{ } -(void)setCustomLabel:(UILabel*)label{ label.font = [UIFont boldSystemFontOfSize:22]; label.layer.cornerRadius = 5; label.layer.masksToBounds = YES; label.textColor = QXConfig.textColor; label.textAlignment = NSTextAlignmentCenter; label.backgroundColor = RGB16(0xEFF2F8); MJWeakSelf [label addTapBlock:^(id _Nonnull obj) { [weakSelf.textField becomeFirstResponder]; }]; // label.layer.shadowColor = [UIColor grayColor].CGColor; // label.layer.shadowOpacity = 0.5; // label.layer.shadowOffset = CGSizeMake(0, 2); // label.layer.shadowRadius = 5; // label.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, labelWith, labelHeight) cornerRadius:0].CGPath; // [label addShadowWithColor:[UIColor grayColor] radius:5 frame:CGRectMake(0, 0, labelWith, labelHeight)]; } -(BOOL)textFieldShouldReturn:(UITextField *)textField{ [textField resignFirstResponder]; return YES; } -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ if (string.length>1) { //防止粘贴 return NO; } if (textField.text.length <= 4) { if (textField.text.length == 0) { if ([string isEqualToString:@""]) { //不做操作 }else{ self.label1.text = string; } }else if (textField.text.length == 1){ if ([string isEqualToString:@""]) { self.label1.text = @""; }else{ self.label2.text = string; } }else if (textField.text.length == 2){ if ([string isEqualToString:@""]) { self.label2.text = @""; }else{ self.label3.text = string; } self.label4.text = @""; }else if (textField.text.length == 3){ if ([string isEqualToString:@""]) { self.label3.text = @""; }else{ self.label4.text = string; self.textField.text = [NSString stringWithFormat:@"%@%@%@%@",self.label1.text,self.label2.text,self.label3.text,self.label4.text]; [self.textField resignFirstResponder]; if (self.delegate && [self.delegate respondsToSelector:@selector(inputFinished:)]) { [self.delegate inputFinished:[NSString stringWithFormat:@"%@%@%@%@",self.label1.text,self.label2.text,self.label3.text,self.label4.text]]; } } }else{ if ([string isEqualToString:@""]) { self.label4.text = @""; return YES; } return NO; } return YES; } return NO; } -(void)setType:(QXPasswordViewType)type{ _type = type; switch (type) { case QXPasswordViewTypeChirldMode:{ self.titleLabel.text = QXText(@"请输入监护密码"); } break; case QXPasswordViewTypeChirldModeTwice:{ self.titleLabel.text = QXText(@"请确认监护密码"); } break; case QXPasswordViewTypeRoom:{ self.titleLabel.text = QXText(@"请输入房间密码"); } break; default: break; } } @end