// // LoginTextField.m // QXLive // // Created by 启星 on 2025/5/6. // #import "QXLoginTextField.h" #import "QXTimer.h" #import "QXLoginNetwork.h" @interface QXLoginTextField() @property(nonatomic,strong)QXTimer *timer; @end @implementation QXLoginTextField -(instancetype)init; { self = [super init]; if (self) { [self initSubViews]; } return self; } -(instancetype)initWithFrame:(CGRect)frame type:(LoginTextType)type { self = [super initWithFrame:frame]; if (self) { [self initSubViews]; [self setType:type]; } return self; } -(void)initSubViews{ self.leftView = [[UIImageView alloc] init]; [self addSubview:self.leftView]; [self.leftView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(12); make.size.mas_equalTo(CGSizeMake(20, 20)); make.centerY.equalTo(self); }]; self.eyesBtn = [[UIButton alloc] init]; [self.eyesBtn addTarget:self action:@selector(eyesAction:) forControlEvents:(UIControlEventTouchUpInside)]; [self.eyesBtn setImage:[UIImage imageNamed:@"login_password_close"] forState:(UIControlStateNormal)]; [self.eyesBtn setImage:[UIImage imageNamed:@"login_password_open"] forState:(UIControlStateSelected)]; [self addSubview:self.eyesBtn]; [self.eyesBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.right.mas_equalTo(-12); make.size.mas_equalTo(CGSizeMake(20, 20)); make.centerY.equalTo(self); }]; self.eyesBtn.hidden = YES; self.codeBtn = [[UIButton alloc] init]; self.codeBtn.needEventInterval = 0.5; [self.codeBtn setTitle:QXText(@"获取验证码") forState:(UIControlStateNormal)]; [self.codeBtn setTitleColor:QXConfig.themeColor forState:(UIControlStateNormal)]; self.codeBtn.titleLabel.font = [UIFont systemFontOfSize:16]; [self.codeBtn addTarget:self action:@selector(codeAction:) forControlEvents:(UIControlEventTouchUpInside)]; self.codeBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentTrailing; [self addSubview:self.codeBtn]; [self.codeBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.right.mas_equalTo(-12); make.centerY.equalTo(self); }]; self.codeBtn.hidden = YES; self.textField = [[UITextField alloc] init]; self.textField.textColor = QXConfig.textColor; self.textField.font = [UIFont boldSystemFontOfSize:17.f]; [self addSubview:self.textField]; [self.textField mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.leftView.mas_right).offset(6); make.right.equalTo(self.eyesBtn.mas_left).offset(-10); make.top.bottom.equalTo(self); }]; self.leftLabel = [[UILabel alloc] init]; self.leftLabel.font = [UIFont systemFontOfSize:16]; self.leftLabel.textColor = RGB16(0x333333); self.leftLabel.hidden = YES; [self addSubview:self.leftLabel]; [self.leftLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(12); make.centerY.equalTo(self); }]; } -(void)setType:(LoginTextType)type{ _type = type; switch (type) { case LoginTextTypeAccount:{ self.leftView.image = [UIImage imageNamed:@"login_account"]; self.textField.placeholder = QXText(@"请输入手机号"); self.textField.keyboardType = UIKeyboardTypeNumbersAndPunctuation; self.eyesBtn.hidden = YES; self.codeBtn.hidden = YES; self.leftLabel.hidden = YES; } break; case LoginTextTypePassword:{ self.leftView.image = [UIImage imageNamed:@"login_password"]; self.textField.placeholder = QXText(@"请输入密码"); self.textField.secureTextEntry = YES; self.eyesBtn.hidden = NO; self.codeBtn.hidden = YES; self.leftLabel.hidden = YES; } break; case LoginTextTypeCode:{ self.leftView.image = [UIImage imageNamed:@"login_code"]; self.textField.placeholder = QXText(@"请输入验证码"); [self.codeBtn mas_remakeConstraints:^(MASConstraintMaker *make) { make.right.mas_equalTo(-12); make.centerY.equalTo(self); make.width.mas_equalTo(110); }]; [self.textField mas_remakeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.leftView.mas_right).offset(6); make.right.equalTo(self.codeBtn.mas_left).offset(-10); make.top.bottom.equalTo(self); }]; self.eyesBtn.hidden = YES; self.codeBtn.hidden = NO; self.leftLabel.hidden = YES; } break; case LoginTextTypeRepassword:{ self.leftView.image = [UIImage imageNamed:@"login_password"]; self.textField.placeholder = QXText(@"请再次确认新密码"); self.textField.secureTextEntry = YES; self.eyesBtn.hidden = NO; self.codeBtn.hidden = YES; self.leftLabel.hidden = YES; } break; case LoginTextTypeRealName:{ self.textField.placeholder = QXText(@"请输入你的真实姓名"); self.leftView.hidden = YES; self.eyesBtn.hidden = YES; self.codeBtn.hidden = YES; self.leftLabel.hidden = NO; self.leftLabel.text = QXText(@"真实姓名"); self.textField.font = [UIFont systemFontOfSize:13]; self.textField.textAlignment = NSTextAlignmentRight; [self.leftLabel mas_remakeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(12); make.centerY.equalTo(self); make.width.mas_equalTo(100); }]; [self.textField mas_remakeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.leftLabel.mas_right).offset(6); make.right.equalTo(self).offset(-12); make.top.bottom.equalTo(self); }]; } break; case LoginTextTypeIdNumber:{ self.textField.placeholder = QXText(@"请输入你的身份证号码"); self.leftView.hidden = YES; self.eyesBtn.hidden = YES; self.codeBtn.hidden = YES; self.leftLabel.hidden = NO; self.textField.font = [UIFont systemFontOfSize:13]; self.leftLabel.text = QXText(@"身份证号"); self.textField.textAlignment = NSTextAlignmentRight; [self.textField mas_remakeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.leftLabel.mas_right).offset(6); make.right.equalTo(self).offset(-12); make.top.bottom.equalTo(self); }]; [self.leftLabel mas_remakeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(12); make.centerY.equalTo(self); make.width.mas_equalTo(100); }]; } break; case LoginTextTypeAliPay:{ self.textField.placeholder = QXText(@"请输入您的支付宝账户"); self.leftView.hidden = YES; self.eyesBtn.hidden = YES; self.codeBtn.hidden = YES; self.leftLabel.hidden = YES; self.textField.font = [UIFont systemFontOfSize:15]; self.textField.textAlignment = NSTextAlignmentCenter; self.leftLabel.text = QXText(@"身份证号"); [self.textField mas_remakeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(12); make.right.equalTo(self).offset(-12); make.top.bottom.equalTo(self); }]; } break; case LoginTextTypeBankNumber:{ self.textField.placeholder = QXText(@"请输入您的银行卡号"); self.leftView.hidden = YES; self.eyesBtn.hidden = YES; self.codeBtn.hidden = YES; self.leftLabel.hidden = YES; self.textField.font = [UIFont systemFontOfSize:15]; self.textField.textAlignment = NSTextAlignmentCenter; self.leftLabel.text = QXText(@"身份证号"); [self.textField mas_remakeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(12); make.right.equalTo(self).offset(-12); make.top.bottom.equalTo(self); }]; } break; case LoginTextTypeBankName:{ self.textField.placeholder = QXText(@"请输入所属银行"); self.leftView.hidden = YES; self.eyesBtn.hidden = YES; self.codeBtn.hidden = YES; self.leftLabel.hidden = YES; self.textField.font = [UIFont systemFontOfSize:15]; self.textField.textAlignment = NSTextAlignmentCenter; self.leftLabel.text = QXText(@"身份证号"); [self.textField mas_remakeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(12); make.right.equalTo(self).offset(-12); make.top.bottom.equalTo(self); }]; } break; case LoginTextTypeBankAddress:{ self.textField.placeholder = QXText(@"请输入银行卡开户行"); self.leftView.hidden = YES; self.eyesBtn.hidden = YES; self.codeBtn.hidden = YES; self.leftLabel.hidden = YES; self.textField.font = [UIFont systemFontOfSize:15]; self.textField.textAlignment = NSTextAlignmentCenter; self.leftLabel.text = QXText(@"身份证号"); [self.textField mas_remakeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(12); make.right.equalTo(self).offset(-12); make.top.bottom.equalTo(self); }]; } break; default: break; } } -(void)eyesAction:(UIButton*)sender{ sender.selected = !sender.selected; self.textField.secureTextEntry = !sender.selected; } -(void)codeAction:(UIButton*)sender{ if (self.delegate && [self.delegate respondsToSelector:@selector(didClickSendCode:)]) { [self.delegate didClickSendCode:sender]; } } -(void)startTimeDown{ self.codeBtn.userInteractionEnabled = NO; __block int timeCount = 60; _timer = [QXTimer scheduledTimerWithTimeInterval:1 repeats:YES queue:dispatch_get_main_queue() block:^{ timeCount--; if (timeCount<=0) { [self->_timer invalidate]; self->_codeBtn.userInteractionEnabled = YES; [self->_codeBtn setTitle:QXText(@"获取验证码") forState:(UIControlStateNormal)]; }else{ [self->_codeBtn setTitle:[NSString stringWithFormat:@"%@(%d)",QXText(@"重新获取"),timeCount] forState:(UIControlStateNormal)]; } }]; } @end