Files
featherVoice/QXLive/Login(登录)/View/QXLoginTextField.m

282 lines
11 KiB
Mathematica
Raw Normal View History

2025-08-08 10:49:36 +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-10-20 09:43:10 +08:00
[self.codeBtn setTitleColor:QXConfig.themeColor forState:(UIControlStateNormal)];
2025-08-08 10:49:36 +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--;
2025-11-28 22:43:06 +08:00
if (self == nil) {
return;
}
2025-08-08 10:49:36 +08:00
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)];
}
}];
}
2025-11-28 22:43:06 +08:00
-(void)dealloc{
if (_timer) {
[_timer invalidate];
_timer = nil;
}
}
2025-08-08 10:49:36 +08:00
@end