123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373 |
- //
- // SKBaseAccountViewController.m
- // sikey comm
- //
- // Created by 刘振兴 on 2024/2/4.
- // Copyright © 2024 BaH Cy. All rights reserved.
- //
- #import "SKBaseAccountViewController.h"
- #import "SKBaseAccountViewController+user.h"
- @interface SKBaseAccountViewController()<UITextFieldDelegate>
- @end
- @implementation SKBaseAccountViewController
- - (void)viewDidLoad {
- [super viewDidLoad];
- // Do any additional setup after loading the view.
- [self initTextField];
- [self initTextFieldPlaceholder];
- [self initCountry];
- [self setStackViewCornerRadius];
- [self onInitAccount];
- }
- - (void)initTextField {
- self.mPhoneNumTextField.delegate = self;
- self.mPhoneNumVerifyTextField.delegate = self;
- self.mEmailNumTextField.delegate = self;
- self.mEmailNumVerifyTextField.delegate = self;
-
- self.mPwdTextField.delegate = self;
- self.mPwdOldTextField.delegate = self;
- self.mPwdNewTextField.delegate = self;
- self.mPwdNewVerifyTextField.delegate = self;
-
- self.mPhoneCaptchaTextField.delegate = self;
- self.mEmailCaptchaTextField.delegate = self;
- self.mEmailCaptchaLocalTextField.delegate = self;
- }
- - (void)initTextFieldPlaceholder {
- [self setTextFieldPlaceholder:self.mPhoneNumTextField placeholder:NSLocalizedString(@"Input.Mobile.Number", nil)];
- [self setTextFieldPlaceholder:self.mPhoneNumVerifyTextField placeholder:NSLocalizedString(@"Input.Mobile.Number.Verify", nil)];
-
- [self setTextFieldPlaceholder:self.mEmailNumTextField placeholder:NSLocalizedString(@"Input.Email.Number", nil)];
- [self setTextFieldPlaceholder:self.mEmailNumVerifyTextField placeholder:NSLocalizedString(@"Input.Email.Number.Verify", nil)];
-
- [self setTextFieldPlaceholder:self.mPwdTextField placeholder:NSLocalizedString(@"Input.Passcode", nil)];
- [self setTextFieldPlaceholder:self.mPwdOldTextField placeholder:NSLocalizedString(@"Input.Passcode.Old", nil)];
- [self setTextFieldPlaceholder:self.mPwdNewTextField placeholder:NSLocalizedString(@"Input.Passcode.New", nil)];
- [self setTextFieldPlaceholder:self.mPwdNewVerifyTextField placeholder:NSLocalizedString(@"Input.Passcode.New.Verify", nil)];
-
- [self setTextFieldPlaceholder:self.mPhoneCaptchaTextField placeholder:NSLocalizedString(@"Input.Verify.Code", nil)];
- [self setTextFieldPlaceholder:self.mEmailCaptchaTextField placeholder:NSLocalizedString(@"Input.Verify.Code", nil)];
- [self setTextFieldPlaceholder:self.mEmailCaptchaLocalTextField placeholder:NSLocalizedString(@"Input.Verify.Code", nil)];
- }
- - (void)initCountry {
- NSString* code = [EUtil getCountryCode];
- if (self.mPhoneCountryLabel) {
- self.mPhoneCountryLabel.text = [NSString stringWithFormat:@"+%@", code];
- }
- if (self.mPhoneCountryVerifyLabel) {
- self.mPhoneCountryVerifyLabel.text = [NSString stringWithFormat:@"+%@", code];
- }
- }
- - (void)setStackViewCornerRadius {
- for (UIView* view in self.mAccountStatckView.subviews) {
- [view.layer setMasksToBounds:YES];
- [view.layer setCornerRadius:27.0];
- if (view.tag > 0) {
- [view.layer setBorderColor:[[UIColor colorWithRed:204/255.0f green:204/255.0f blue:219/255.0f alpha:1] CGColor]];
- [view.layer setBorderWidth:1];
- }
-
- //获取验证码 button
- UIButton* button = [view viewWithTag:100];
- if (button && [button isKindOfClass:[UIButton class]]) {
- [button.layer setMasksToBounds:YES];
- [button.layer setCornerRadius:16.0]; //设置矩形四个圆角半径
- }
-
- button = [view viewWithTag:110];
- if (button && [button isKindOfClass:[UIButton class]]) {
- [button.layer setMasksToBounds:YES];
- [button.layer setCornerRadius:22.0]; //设置矩形四个圆角半径
- }
- }
- }
- //100:手机号码 200:邮箱
- - (void)initAccountType {
- int area = [UserDataHelper getSelectArea];
- int type = area == 0 ? 100 : 200;
-
- NSInteger start = type;
- NSInteger end = start + 99;
- for (UIView* view in self.mAccountStatckView.subviews) {
- NSInteger tag = view.tag;
- if (tag < 100)
- continue;
- BOOL isHidden = tag < start || tag > end;
- [view setHidden:isHidden];
-
- UITextField* textField = [view viewWithTag:10];
- if (isHidden) {
- textField = nil;
- }
- }
- }
- - (void)refreshCaptchaButton:(NSInteger)timeLeft {
- for (UIView* view in self.mAccountStatckView.subviews) {
- //获取验证码 button
- UIButton* button = [view viewWithTag:100];
- if (button && [button isKindOfClass:[UIButton class]]) {
- [self refreshCaptchaButtonEx:timeLeft button:button];
- }
- }
- }
- - (void)refreshCaptchaButtonEx:(NSInteger)timeLeft button:(UIButton*)button {
- if (timeLeft > 0) {
- [button setEnabled:NO];
- NSString *text = [NSString stringWithFormat:NSLocalizedString(@"Retry.Later.Verify", nil),/*@"%ld秒后再试!",*/ (long)timeLeft];
- [button setTitle:text forState:UIControlStateNormal];
- [button setBackgroundColor:[UIColor colorWithRed:44/255.0 green:156/255.0 blue:255/255.0 alpha:0.3]];
- } else {
- [button setEnabled:YES];
- [button setTitle:NSLocalizedString(@"Get.Verify.Code", nil) forState:UIControlStateNormal];
- [button setBackgroundColor:[UIColor colorWithRed:44/255.0 green:156/255.0 blue:255/255.0 alpha:1]];
- }
- }
- - (void)onCountryCodeCallback:(NSString*)code {
- if (self.mPhoneCountryLabel) {
- self.mPhoneCountryLabel.text = [NSString stringWithFormat:@"+%@", code];
- }
- if (self.mPhoneCountryVerifyLabel) {
- self.mPhoneCountryVerifyLabel.text = [NSString stringWithFormat:@"+%@", code];
- }
- }
- - (void)setTextFieldPlaceholder:(UITextField*)textField placeholder:(NSString*)placeholder {
- textField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSForegroundColorAttributeName:[UIColor colorWithRed:0/255.0f green:1/255.0f blue:75/255.0f alpha:0.2], NSFontAttributeName:[UIFont systemFontOfSize:14]}];
- }
- - (IBAction)phoneCaptchaCodeAction:(id)sender {
- if (![self checkPhoneNumTextField]) {
- return;
- }
- [self requstPhoneCaptchaCode];
- [self startTimer];
- }
- - (IBAction)emailCaptchaCodeAction:(id)sender {
- if (![self checkEmailNumTextField]) {
- return;
- }
- [self requstEmailCaptchaCode];
- [self startTimer];
- }
- - (void)phoneLoginRequest {
- [self ShowHUBWithText:NSLocalizedString(@"SK.Login...", nil)];//@"登录中..."];
- NSString* areaCode = [self.mPhoneCountryLabel.text stringByReplacingOccurrencesOfString:@"+" withString:@""];
- [self requestLogin:NO areaCode:areaCode phone:self.mPhoneNumTextField.text email:@"" password:self.mPwdTextField.text captcha:@"" callback:^(BOOL isOK, BOOL isChildExist) {
- [self HiddenHUB];
- if (isOK) {
- if (isChildExist) {
- [[DataManager shared] showTabBarController];
- } else {
- [[DataManager shared] showBindViewController];
- }
- }
- }];
- }
- - (void)emailLoginRequest {
- [self ShowHUBWithText:NSLocalizedString(@"SK.Login...", nil)];//@"登录中..."];
- [self requestLogin:YES areaCode:@"" phone:@"" email:self.mEmailNumTextField.text password:self.mPwdTextField.text captcha:@"" callback:^(BOOL isOK, BOOL isChildExist) {
- [self HiddenHUB];
- if (isOK) {
- if (isChildExist) {
- [[DataManager shared] showTabBarController];
- } else {
- [[DataManager shared] showBindViewController];
- }
- }
- }];
- }
- #pragma mark - 注册请求
- - (void)phoneRegisterRequest {
- [self ShowHUBWithText:NSLocalizedString(@"Loading...", nil)];//@"加载中..."];
- NSString* areaCode = [self.mPhoneCountryLabel.text stringByReplacingOccurrencesOfString:@"+" withString:@""];
- [self requestRegister:NO areaCode:areaCode phone:self.mPhoneNumTextField.text email:@"" password:self.mPwdTextField.text captcha:self.mPhoneCaptchaTextField.text callback:^(BOOL isOK) {
- [self HiddenHUB];
- if (isOK) {
- [self popViewController:nil];
- }
- }];
- }
- - (void)emailRegisterRequest:(NSString*)areaCode phone:(NSString*)phone email:(NSString*)email password:(NSString*)password captcha:(NSString*)captcha {
- [self ShowHUBWithText:NSLocalizedString(@"Loading...", nil)];//@"加载中..."];
- areaCode = [areaCode stringByReplacingOccurrencesOfString:@"+" withString:@""];
- [self requestRegister:YES areaCode:areaCode phone:phone email:email password:password captcha:captcha callback:^(BOOL isOK) {
- [self HiddenHUB];
- if (isOK) {
- [[DataManager shared] showSKLoginViewController];
- }
- }];
- }
- - (BOOL)checkAccount {
- int area = [UserDataHelper getSelectArea];
- if (area == 0) {
- return [self checkPhoneAccount];
- } else {
- return [self checkEmailAccount];
- }
- }
- - (BOOL)checkEmailAccount {
- if (![self checkAccountEmailTextField])
- return NO;
-
- if (![self checkAccountPasswordTextField])
- return NO;
-
- if (![self checkAccountEmailCaptchaTextField])
- return NO;
-
- return YES;
- }
- - (BOOL)checkPhoneAccount {
- if (![self checkAccountPhoneTextField])
- return NO;
-
- if (![self checkAccountPasswordTextField])
- return NO;
-
- if (![self checkAccountPhoneCaptchaTextField])
- return NO;
-
- return YES;
- }
- - (BOOL)checkAccountEmailTextField {
- //email
- if (self.mEmailNumTextField && self.mEmailNumTextField.text.length <= 0) {
- [EasyTextView showErrorText:NSLocalizedString(@"Input.Email.Number", nil)];
- return NO;
- }
- if (self.mEmailNumTextField && ![self.mEmailNumTextField.text isValidateEmail]) {
- [EasyTextView showErrorText:NSLocalizedString(@"Input.Correct.Email.Number", nil)];
- return NO;
- }
- if (self.mEmailNumVerifyTextField && self.mEmailNumVerifyTextField.text.length <= 0) {
- [EasyTextView showErrorText:NSLocalizedString(@"Input.Email.Number.Verify", nil)];
- return NO;
- }
- if (self.mEmailNumTextField && self.mEmailNumVerifyTextField && ![self.mEmailNumTextField.text isEqualToString:self.mEmailNumVerifyTextField.text]) {
- [EasyTextView showErrorText:NSLocalizedString(@"Input.Email.Not.Match", nil)];
- return NO;
- }
- return YES;
- }
- - (BOOL)checkAccountEmailCaptchaTextField {
- //Captcha
- if (self.mEmailCaptchaTextField && self.mEmailCaptchaTextField.text.length <= 0) {
- [EasyTextView showErrorText:NSLocalizedString(@"Input.Verify.Code", nil)];//@"请输入验证码"];
- return NO;
- }
- if (self.mEmailCaptchaLocalTextField && ![[[self.mEmailCaptchaLocalTextField.text trimString] lowercaseString] isEqualToString:[[self.mPooCodeView getCode] lowercaseString]]) {
- [EasyTextView showErrorText:NSLocalizedString(@"Input.Verify.Code.Error", nil)];//@"请输入验证码"];
- return NO;
- }
- return YES;
- }
- - (BOOL)checkAccountPhoneTextField {
- //Phone number
- if (self.mPhoneNumTextField && self.mPhoneNumTextField.text.length <= 0) {
- [EasyTextView showErrorText:NSLocalizedString(@"Input.Mobile.Number", nil)];
- }
- if (self.mPhoneNumTextField && ![self.mPhoneNumTextField.text isValidateMobile]) {
- [EasyTextView showErrorText:NSLocalizedString(@"Input.Correct.Mobile.Number", nil)];
- return NO;
- }
- if (self.mPhoneNumVerifyTextField && self.mPhoneNumVerifyTextField.text.length <= 0) {
- [EasyTextView showErrorText:NSLocalizedString(@"Input.Mobile.Number.Verify", nil)];
- return NO;
- }
- if (self.mPhoneNumTextField && self.mPhoneNumVerifyTextField && ![self.mPhoneNumTextField.text isEqualToString:self.mPhoneNumVerifyTextField.text]) {
- [EasyTextView showErrorText:NSLocalizedString(@"Input.Phone.Not.Match", nil)];
- return NO;
- }
- return YES;
- }
- - (BOOL)checkAccountPhoneCaptchaTextField {
- if (self.mPhoneCaptchaTextField && self.mPhoneCaptchaTextField.text.length <= 0) {
- [EasyTextView showErrorText:NSLocalizedString(@"Input.Verify.Code.Recive", nil)];//@"请输入手机收到的验证码"];
- return NO;
- }
- return YES;
- }
- - (BOOL)checkAccountPasswordTextField {
- //Password
- if (self.mPwdTextField && self.mPwdTextField.text.length <= 0) {
- [EasyTextView showErrorText:NSLocalizedString(@"Input.Passcode", nil)];
- return NO;
- }
- if (self.mPwdTextField && [self.mPwdTextField.text passWord] == NO) {
- [EasyTextView showErrorText:NSLocalizedString(@"Input.Correct.Passcode", nil)];//@"密码应该为6-16位英文和数字"];
- return NO;
- }
- if (self.mPwdOldTextField && self.mPwdOldTextField.text.length <= 0) {
- [EasyTextView showErrorText:NSLocalizedString(@"Input.Passcode.Old", nil)];
- return NO;
- }
- if (self.mPwdOldTextField && [self.mPwdOldTextField.text passWord] == NO) {
- [EasyTextView showErrorText:NSLocalizedString(@"Input.Correct.Passcode", nil)];//@"密码应该为6-16位英文和数字"];
- return NO;
- }
- if (self.mPwdNewTextField && self.mPwdNewTextField.text.length <= 0) {
- [EasyTextView showErrorText:NSLocalizedString(@"Input.Passcode.New", nil)];
- return NO;
- }
- if (self.mPwdNewTextField && [self.mPwdNewTextField.text passWord] == NO) {
- [EasyTextView showErrorText:NSLocalizedString(@"Input.Correct.Passcode", nil)];//@"密码应该为6-16位英文和数字"];
- return NO;
- }
- if (self.mPwdNewTextField && self.mPwdNewVerifyTextField && ![self.mPwdNewTextField.text isEqualToString:self.mPwdNewVerifyTextField.text]) {
- [EasyTextView showErrorText:NSLocalizedString(@"Input.Passcode.Not.Match", nil)];//@"请输入验证码"];
- return NO;
- }
- return YES;
- }
- - (BOOL)checkPhoneNumTextField {
- if (![self.mPhoneNumTextField.text isValidateMobile]) {
- [EasyTextView showInfoText:NSLocalizedString(@"Input.Correct.Mobile.Number", nil)];//@"请输入3~32位数字号码"];
- return NO;
- }
- return YES;
- }
- - (BOOL)checkEmailNumTextField {
- if (![self.mEmailNumTextField.text isValidateEmail]) {
- [EasyTextView showInfoText:NSLocalizedString(@"Input.Correct.Email.Number", nil)];
- return NO;
- }
- return YES;
- }
- - (void)textFieldDidEndEditing:(UITextField *)textField {
- if (textField == self.mPhoneNumTextField || textField == self.mPhoneCaptchaTextField) {
- textField.text = [EUtil getAllNumber:textField.text];
- } else {
- textField.text = [textField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
- }
- }
- @end
|