2025-08-14 10:07:49 +08:00
|
|
|
//
|
|
|
|
|
// 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)];
|
2025-08-15 18:39:24 +08:00
|
|
|
[self.codeBtn setTitleColor:QXConfig.themeColor forState:(UIControlStateNormal)];
|
2025-08-14 10:07:49 +08:00
|
|
|
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
|