RDSLoginVerifyCodeVC.m 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. //
  2. // RDSLoginVerifyCodeVC.m
  3. // SmartLightForBigFish
  4. //
  5. // Created by coderYK on 2017/11/17.
  6. // Copyright © 2017年 RD. All rights reserved.
  7. //
  8. #import "RDSLoginVerifyCodeVC.h"
  9. #import "WLCaptcheButton.h"
  10. #import "RDSUserProtocolViewController.h"
  11. #import "NSString+verify.h"
  12. #import "UIView+RDSClip.h"
  13. #import "UIImage+Extension.h"
  14. #import "RDSRootControl.h"
  15. #import "RDSLoginPwdCodeVC.h"
  16. #import "RDCheckAppVersion.h"
  17. @interface RDSLoginVerifyCodeVC ()<UITextFieldDelegate>
  18. @property (weak, nonatomic) IBOutlet UIView *phoneView;
  19. @property (weak, nonatomic) IBOutlet UIView *verifyCodeView;
  20. @property (weak, nonatomic) IBOutlet UIButton *loginBtn;
  21. @property (weak, nonatomic) IBOutlet WLCaptcheButton *verifyCodeBtn;
  22. @property (weak, nonatomic) IBOutlet UITextField *phoneTF;
  23. @property (weak, nonatomic) IBOutlet UITextField *verifyCodeTF;
  24. @property (weak, nonatomic) IBOutlet UITextField *pwdTF;
  25. @property (weak, nonatomic) IBOutlet UIButton *agreeBtn;
  26. @property (weak, nonatomic) IBOutlet UIButton *userAgreement;
  27. @property (weak, nonatomic) IBOutlet UILabel *userAgreementLab;
  28. @end
  29. @implementation RDSLoginVerifyCodeVC
  30. - (void)viewDidLoad {
  31. [super viewDidLoad];
  32. // 隐藏导航栏
  33. self.fd_prefersNavigationBarHidden = YES;
  34. self.view.backgroundColor = [UIColor whiteColor];
  35. [self p_setupTF];
  36. [self.verifyCodeBtn rds_setCornerRadius:self.verifyCodeBtn.rds_height*0.5 borderLineWidth:1 lineColor:RDSGreenColor];
  37. _phoneTF.text = TheDataManager.phone;
  38. // _verifyCodeTF.text = TheDataManager.verifyCode;
  39. // if(!TheDataManager.isFirstTimeAgree){
  40. // [TheAlertCtrl rds_alertWithTitle:@"用户协议和隐私协议" message:@"\n欢迎使用永续绿建五恒 APP,我们非常重视您的隐私保护和个人信息保护,使用本软件的过程中我们会严格按照法律规定收集存储和使用您的个人信息,未经您的同意我们不会向第三方提供您的任何信息,您可以阅读《用户协议》 和《隐私协议》 全文了解详细信息。如您同意,请点击“同意”开始接受我们的服务。" cancel:@"暂不使用" sure:@"同意" cancelColor:nil sureColor:nil cancelAction:^{
  41. //
  42. // // Home键退出后台动画效果,此时后台还是挂起状态
  43. // [[UIApplication sharedApplication] performSelector:@selector(suspend)];
  44. // dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  45. // // 杀掉应用,这里会有警告⚠️忽略即可,强迫症的话就使用exit(0)吧
  46. // [[UIApplication sharedApplication] performSelector:@selector(terminateWithSuccess)];
  47. // });
  48. //
  49. // } sureAction:^{
  50. // TheDataManager.isFirstTimeAgree = YES;
  51. // }];
  52. // }
  53. // 检查更新
  54. [TheCheckAppVersion checkUpdate];
  55. // 这是rootControl 自动登录时会先进入这个页面,所有先隐藏
  56. if(!self.isPushVc){
  57. self.view.alpha = 0;
  58. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  59. self.view.alpha = 1;
  60. });
  61. }
  62. }
  63. - (void)viewDidLayoutSubviews{
  64. [super viewDidLayoutSubviews];
  65. _phoneView.layer.cornerRadius = _phoneView.rds_height/2;
  66. _verifyCodeView.layer.cornerRadius = _verifyCodeView.rds_height/2;
  67. _verifyCodeBtn.layer.cornerRadius = _verifyCodeBtn.rds_height/2;
  68. }
  69. - (void)viewWillAppear:(BOOL)animated{
  70. [super viewWillAppear:animated];
  71. _agreeBtn.selected = NO;
  72. }
  73. #pragma mark - Action
  74. - (IBAction)p_onPwdLogin {
  75. if(_isPushVc){
  76. [self popViewControllerAnimated:YES];
  77. }else{
  78. RDSLoginPwdCodeVC *vc = [[RDSLoginPwdCodeVC alloc] init];
  79. vc.isPushVc = YES;
  80. [self pushViewController:vc animated:YES];
  81. }
  82. }
  83. // 登录
  84. - (IBAction)p_onLogin {
  85. if (![self.phoneTF.text isPhoneNum]) {
  86. [RDSHudShower showBottomToast:@"请输入正确的手机号码"];
  87. return;
  88. }
  89. else if (self.verifyCodeTF.text.length < 1){
  90. [RDSHudShower showBottomToast:@"请输入验证码"];
  91. return;
  92. }
  93. else if (!self.agreeBtn.isSelected){
  94. [RDSHudShower showBottomToast:@"请先阅读并同意用户协议"];
  95. return;
  96. }
  97. [RDSHudShower showWithStatus:@"正在登录账户…" autoDismiss:NO];
  98. RDS_WEAKSELF(weakSelf)
  99. [RDSDemoApiHelper rds_loginWithVerifyCodePhone:self.phoneTF.text code:self.verifyCodeTF.text success:^(id responseObject) {
  100. if ([responseObject[@"code"] intValue] != 0) {
  101. [RDSHudShower showBottomToast:responseObject[@"message"]];
  102. }
  103. else{
  104. [RDSHudShower dismissHUD];
  105. [RDSRootControl shareControl].isLoginSuccess = YES;
  106. NSDictionary *data = responseObject[@"data"];
  107. TheDataManager.token = [NSString stringWithFormat:@"%@ %@",data[@"token_type"], data[@"access_token"]];
  108. TheDataManager.verifyCode = weakSelf.verifyCodeTF.text;
  109. TheDataManager.isFirstLogin = [data[@"app_first_login"] boolValue];
  110. }
  111. } failure:^(NSError *error) {
  112. [RDSHudShower showBottomToast:@"连接服务器失败"];
  113. }];
  114. }
  115. - (IBAction)p_getVerifyCode:(WLCaptcheButton *)verifyCodeBtn {
  116. if (![self.phoneTF.text isPhoneNum]) {
  117. [RDSHudShower showCenterToast:@"请输入正确的手机号码"];
  118. return;
  119. }
  120. //TheDataManager.phone = self.phoneTF.text;
  121. _verifyCodeTF.text = @"";
  122. [_verifyCodeTF becomeFirstResponder];
  123. [verifyCodeBtn fire];
  124. [RDSHudShower showWithStatus:@"正在获取验证码…" autoDismiss:YES];
  125. RDS_WEAKSELF(weakSelf)
  126. [RDSDemoApiHelper rds_getVerifyCodePhone:self.phoneTF.text type:1 success:^(id responseObject) {
  127. if ([responseObject[@"code"] intValue] != 0) {
  128. [RDSHudShower showBottomToast:responseObject[@"message"]];
  129. }
  130. else{
  131. [RDSHudShower showBottomToast:@"获取验证码成功"];
  132. }
  133. } failure:^(NSError *error) {
  134. [RDSHudShower showBottomToast:@"连接服务器失败"];
  135. DDLog(@"json data error:/n%@", error.description);
  136. }];
  137. [self.verifyCodeTF becomeFirstResponder];
  138. }
  139. // 阅读并同意
  140. - (IBAction)p_onAgreeBtnClick:(UIButton *)sender {
  141. sender.selected = !sender.selected;
  142. }
  143. // 点击用户协议
  144. - (IBAction)p_onUserAgreementClick {
  145. RDSUserProtocolViewController *userProtocolVC = [[RDSUserProtocolViewController alloc] init];
  146. userProtocolVC.url = kUserAgreement;
  147. userProtocolVC.vcTitle = @"用户协议";
  148. [self pushViewController:userProtocolVC animated:YES];
  149. }
  150. // 点击隐私政策
  151. - (IBAction)p_onPrivacyPolicyClick {
  152. RDSUserProtocolViewController *userProtocolVC = [[RDSUserProtocolViewController alloc] init];
  153. userProtocolVC.url = kPrivacyPolicy;
  154. userProtocolVC.vcTitle = @"隐私政策";
  155. [self pushViewController:userProtocolVC animated:YES];
  156. }
  157. - (IBAction)p_onPwdShowBtnClick:(UIButton *)sender {
  158. sender.selected = !sender.selected;
  159. _pwdTF.secureTextEntry = sender.selected;
  160. }
  161. #pragma mark - UITextFieldDelegate
  162. - (void)p_setupTF {
  163. self.phoneTF.delegate = self;
  164. self.verifyCodeTF.delegate = self;
  165. self.pwdTF.delegate = self;
  166. }
  167. // 密文输入时,点击光标不清空
  168. //- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
  169. //
  170. // NSString *updatedString = [textField.text stringByReplacingCharactersInRange:range withString:string];
  171. //
  172. // textField.text = updatedString;
  173. //
  174. // return NO;
  175. //}
  176. - (BOOL)textFieldShouldReturn:(UITextField *)textField {
  177. if (textField == self.phoneTF) {
  178. [self.verifyCodeTF becomeFirstResponder];
  179. }
  180. else if (textField == self.verifyCodeTF) {
  181. [self.pwdTF becomeFirstResponder];
  182. }
  183. else {
  184. [self.pwdTF resignFirstResponder];
  185. [self p_onLogin];
  186. }
  187. return YES;
  188. }
  189. - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
  190. [self.view endEditing:YES];
  191. }
  192. - (void)didReceiveMemoryWarning {
  193. [super didReceiveMemoryWarning];
  194. // Dispose of any resources that can be recreated.
  195. }
  196. - (void)dealloc{
  197. DDLog(@"dealloc~~");
  198. }
  199. @end