Files
keyboard/keyBoard/Class/Login/VC/KBForgetPwdNewPwdVC.m

276 lines
11 KiB
Mathematica
Raw Normal View History

2025-12-03 16:26:49 +08:00
//
// KBForgetPwdNewPwdVC.m
// keyBoard
//
// Created by Mac on 2025/12/3.
//
#import "KBForgetPwdNewPwdVC.h"
2025-12-08 16:39:47 +08:00
#import "KBLoginVM.h"
#import "KBEmailRegistVC.h"
2025-12-03 16:38:20 +08:00
@interface KBForgetPwdNewPwdVC () <UITextFieldDelegate>
@property (nonatomic, strong) UILabel *titleLabel; // Reset Password
@property (nonatomic, strong) UIView *passwordFieldContainer;
@property (nonatomic, strong) UITextField *passwordTextField;
@property (nonatomic, strong) UIButton *passwordToggleButton;
@property (nonatomic, strong) UIView *repeatPasswordFieldContainer;
@property (nonatomic, strong) UITextField *repeatPasswordTextField;
@property (nonatomic, strong) UIButton *repeatPasswordToggleButton;
@property (nonatomic, strong) UIButton *nextButton; // Next Step
2025-12-03 16:26:49 +08:00
@end
@implementation KBForgetPwdNewPwdVC
- (void)viewDidLoad {
[super viewDidLoad];
2025-12-03 16:38:20 +08:00
self.view.backgroundColor = [UIColor whiteColor];
self.kb_titleLabel.text = KBLocalized(@"Reset Password");
2025-12-03 18:02:20 +08:00
[self kb_addTapToDismissKeyboard];
2025-12-03 16:38:20 +08:00
[self setupUI];
}
#pragma mark - UI
- (void)setupUI {
[self.view addSubview:self.titleLabel];
[self.view addSubview:self.passwordFieldContainer];
[self.passwordFieldContainer addSubview:self.passwordTextField];
[self.passwordFieldContainer addSubview:self.passwordToggleButton];
[self.view addSubview:self.repeatPasswordFieldContainer];
[self.repeatPasswordFieldContainer addSubview:self.repeatPasswordTextField];
[self.repeatPasswordFieldContainer addSubview:self.repeatPasswordToggleButton];
[self.view addSubview:self.nextButton];
//
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.view).offset(24);
make.top.equalTo(self.view).offset(KB_NAV_TOTAL_HEIGHT + 32);
}];
//
[self.passwordFieldContainer mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.titleLabel.mas_bottom).offset(24);
make.left.equalTo(self.view).offset(24);
make.right.equalTo(self.view).offset(-24);
make.height.mas_equalTo(52);
}];
[self.passwordToggleButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.passwordFieldContainer);
make.right.equalTo(self.passwordFieldContainer).offset(-16);
make.width.height.mas_equalTo(24);
}];
[self.passwordTextField mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.bottom.equalTo(self.passwordFieldContainer);
make.left.equalTo(self.passwordFieldContainer).offset(16);
make.right.equalTo(self.passwordToggleButton.mas_left).offset(-8);
}];
//
[self.repeatPasswordFieldContainer mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.passwordFieldContainer.mas_bottom).offset(16);
make.left.right.height.equalTo(self.passwordFieldContainer);
}];
[self.repeatPasswordToggleButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.repeatPasswordFieldContainer);
make.right.equalTo(self.repeatPasswordFieldContainer).offset(-16);
make.width.height.mas_equalTo(24);
}];
[self.repeatPasswordTextField mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.bottom.equalTo(self.repeatPasswordFieldContainer);
make.left.equalTo(self.repeatPasswordFieldContainer).offset(16);
make.right.equalTo(self.repeatPasswordToggleButton.mas_left).offset(-8);
}];
// Next Step
[self.nextButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.repeatPasswordFieldContainer.mas_bottom).offset(24);
make.left.right.equalTo(self.passwordFieldContainer);
make.height.mas_equalTo(56);
}];
}
#pragma mark - Actions
- (void)onTapTogglePassword:(UIButton *)sender {
sender.selected = !sender.selected;
BOOL show = sender.selected;
if (sender == self.passwordToggleButton) {
self.passwordTextField.secureTextEntry = !show;
} else if (sender == self.repeatPasswordToggleButton) {
self.repeatPasswordTextField.secureTextEntry = !show;
}
}
- (void)onTapNext {
NSString *pwd = self.passwordTextField.text ?: @"";
NSString *repeat = self.repeatPasswordTextField.text ?: @"";
if (pwd.length == 0 || repeat.length == 0) {
[KBHUD showInfo:KBLocalized(@"Please complete all fields")];
return;
}
if (![pwd isEqualToString:repeat]) {
[KBHUD showInfo:KBLocalized(@"The two passwords do not match")];
return;
}
KBLOG(@"KBForgetPwdNewPwdVC next step, pwdLen=%zd", pwd.length);
// TODO:
2025-12-08 16:39:47 +08:00
NSString *rEmail = self.email ? self.email : @"";
[[KBLoginVM shared] resetPassWord:rEmail password:pwd confirmPassword:pwd withCompletion:^(BOOL success, NSError * _Nullable error) {
///
if (success) {
UIViewController *targetVC = nil;
for (UIViewController *vc in KB_CURRENT_NAV.viewControllers) {
if ([vc isKindOfClass:[KBEmailRegistVC class]]) {
targetVC = vc;
break;
}
}
if (targetVC) {
[KB_CURRENT_NAV popToViewController:targetVC animated:YES];
} else {
// popToRootViewController
[KB_CURRENT_NAV popToRootViewControllerAnimated:YES];
}
}
}];
2025-12-03 16:38:20 +08:00
}
#pragma mark - UITextFieldDelegate
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
if (textField == self.passwordTextField) {
[self.repeatPasswordTextField becomeFirstResponder];
} else if (textField == self.repeatPasswordTextField) {
[textField resignFirstResponder];
[self onTapNext];
}
return YES;
2025-12-03 16:26:49 +08:00
}
2025-12-03 16:38:20 +08:00
#pragma mark - Lazy UI
- (UILabel *)titleLabel {
if (!_titleLabel) {
_titleLabel = [UILabel new];
_titleLabel.text = KBLocalized(@"Reset Password");
_titleLabel.textColor = [UIColor colorWithHex:KBBlackValue];
_titleLabel.font = [KBFont bold:20];
_titleLabel.textAlignment = NSTextAlignmentLeft;
}
return _titleLabel;
}
- (UIView *)passwordFieldContainer {
if (!_passwordFieldContainer) {
_passwordFieldContainer = [UIView new];
_passwordFieldContainer.backgroundColor = [UIColor colorWithHex:0xF7F7F7];
_passwordFieldContainer.layer.cornerRadius = 10.0;
_passwordFieldContainer.layer.masksToBounds = YES;
}
return _passwordFieldContainer;
}
- (UITextField *)passwordTextField {
if (!_passwordTextField) {
_passwordTextField = [[UITextField alloc] init];
_passwordTextField.delegate = self;
_passwordTextField.secureTextEntry = YES;
_passwordTextField.textColor = [UIColor colorWithHex:KBBlackValue];
_passwordTextField.font = [KBFont regular:14];
_passwordTextField.returnKeyType = UIReturnKeyNext;
NSString *ph = KBLocalized(@"Enter Password");
_passwordTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:ph
attributes:@{
NSForegroundColorAttributeName : [UIColor colorWithWhite:0.75 alpha:1.0],
NSFontAttributeName : [KBFont regular:14]
}];
}
return _passwordTextField;
}
- (UIButton *)passwordToggleButton {
if (!_passwordToggleButton) {
_passwordToggleButton = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *eye = [UIImage imageNamed:@"login_eye_icon"];
UIImage *eyeSlash = [UIImage imageNamed:@"login_eyeslash_icon"];
[_passwordToggleButton setImage:eye forState:UIControlStateNormal];
[_passwordToggleButton setImage:eyeSlash forState:UIControlStateSelected];
[_passwordToggleButton addTarget:self
action:@selector(onTapTogglePassword:)
forControlEvents:UIControlEventTouchUpInside];
}
return _passwordToggleButton;
}
- (UIView *)repeatPasswordFieldContainer {
if (!_repeatPasswordFieldContainer) {
_repeatPasswordFieldContainer = [UIView new];
_repeatPasswordFieldContainer.backgroundColor = [UIColor colorWithHex:0xF7F7F7];
_repeatPasswordFieldContainer.layer.cornerRadius = 10.0;
_repeatPasswordFieldContainer.layer.masksToBounds = YES;
}
return _repeatPasswordFieldContainer;
}
- (UITextField *)repeatPasswordTextField {
if (!_repeatPasswordTextField) {
_repeatPasswordTextField = [[UITextField alloc] init];
_repeatPasswordTextField.delegate = self;
_repeatPasswordTextField.secureTextEntry = YES;
_repeatPasswordTextField.textColor = [UIColor colorWithHex:KBBlackValue];
_repeatPasswordTextField.font = [KBFont regular:14];
_repeatPasswordTextField.returnKeyType = UIReturnKeyDone;
NSString *ph = KBLocalized(@"Enter Repeat Password");
_repeatPasswordTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:ph
attributes:@{
NSForegroundColorAttributeName : [UIColor colorWithWhite:0.75 alpha:1.0],
NSFontAttributeName : [KBFont regular:14]
}];
}
return _repeatPasswordTextField;
}
- (UIButton *)repeatPasswordToggleButton {
if (!_repeatPasswordToggleButton) {
_repeatPasswordToggleButton = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *eye = [UIImage imageNamed:@"login_eye_icon"];
UIImage *eyeSlash = [UIImage imageNamed:@"login_eyeslash_icon"];
[_repeatPasswordToggleButton setImage:eye forState:UIControlStateNormal];
[_repeatPasswordToggleButton setImage:eyeSlash forState:UIControlStateSelected];
[_repeatPasswordToggleButton addTarget:self
action:@selector(onTapTogglePassword:)
forControlEvents:UIControlEventTouchUpInside];
}
return _repeatPasswordToggleButton;
}
2025-12-03 16:26:49 +08:00
2025-12-03 16:38:20 +08:00
- (UIButton *)nextButton {
if (!_nextButton) {
_nextButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_nextButton setTitle:KBLocalized(@"Next Step") forState:UIControlStateNormal];
[_nextButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
_nextButton.titleLabel.font = [KBFont medium:16];
_nextButton.backgroundColor = [UIColor colorWithHex:KBColorValue];
2025-12-03 16:54:23 +08:00
_nextButton.layer.cornerRadius = 11.0;
2025-12-03 16:38:20 +08:00
_nextButton.layer.masksToBounds = YES;
[_nextButton addTarget:self action:@selector(onTapNext)
forControlEvents:UIControlEventTouchUpInside];
}
return _nextButton;
2025-12-03 16:26:49 +08:00
}
@end