Files
my_yuyin/QXLive/Mine(音域)/View/设置/QXPasswordView.m
2025-09-22 18:48:29 +08:00

218 lines
7.4 KiB
Objective-C

//
// QXChirldModeView.m
// QXLive
//
// Created by 启星 on 2025/5/12.
//
#import "QXPasswordView.h"
CGFloat labelWith = 50;
CGFloat labelHeight = 63;
@interface QXPasswordView()<UITextFieldDelegate>
@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