YOUPAILZVerifyPhoneWindow.m 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319
  1. //
  2. // YOUPAILZVerifyPhoneWindow.m
  3. // MEISHI
  4. //
  5. // Created by CY on 2021/1/29.
  6. // Copyright © 2021 leo. All rights reserved.
  7. //
  8. #import "YOUPAILZVerifyPhoneWindow.h"
  9. #import "UIViewController+TFPresent.h"
  10. @interface YOUPAILZVerifyPhoneWindow ()<UITextViewDelegate>
  11. @property(nonatomic,strong)UITextField* youpaipphoneTextField;
  12. @property(nonatomic,assign)NSInteger youpaipphoneLength;
  13. @property(nonatomic,strong)UITextField* youpaippwdTextField;
  14. @property(nonatomic,strong)UIButton* youpaipsendVerCodeBtn;
  15. @property(nonatomic,strong)UITextField* youpaipcodeTextField;
  16. @property(nonatomic,strong)UIButton *youpaipverifyBtn;
  17. @property(nonatomic,strong)UIButton *youpaipregisterBtn;
  18. @end
  19. @implementation YOUPAILZVerifyPhoneWindow
  20. - (void)viewDidLoad {
  21. [super viewDidLoad];
  22. self.baseView.hidden = YES;
  23. [self youpaifinitUI];
  24. }
  25. - (void)youpaifinitUI{
  26. UIView *bgV = [[UIView alloc] init];
  27. bgV.backgroundColor = [UIColor whiteColor];
  28. bgV.layer.cornerRadius = 10.0f;
  29. bgV.clipsToBounds = YES;
  30. [self.view addSubview:bgV];
  31. [bgV mas_makeConstraints:^(MASConstraintMaker *make) {
  32. make.left.offset(31.0f);
  33. make.right.offset(-31.0f);
  34. make.centerY.equalTo(self.view);
  35. make.height.offset(389.0f);
  36. }];
  37. UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(14,20,KScreenWidth-90,22)];
  38. label.text = @"手机号绑定";
  39. label.textAlignment = NSTextAlignmentCenter;
  40. label.textColor = HexColorFromRGB(0x333333);
  41. label.font = LCFont(19);
  42. [bgV addSubview:label];
  43. UITextField* youpaipphoneTextField = [[UITextField alloc]initWithFrame:CGRectMake(14,CGRectGetMaxY(label.frame)+20, KScreenWidth-90,48)];
  44. self.youpaipphoneTextField = youpaipphoneTextField;
  45. youpaipphoneTextField.backgroundColor = ZYBGGrayColor;
  46. youpaipphoneTextField.layer.cornerRadius = 5.0;
  47. youpaipphoneTextField.layer.masksToBounds = YES;
  48. youpaipphoneTextField.tintColor = ZYPinkColor;
  49. //适配ios13 leftview sizefit
  50. UIView *leftPhoneView = [[UIView alloc]initWithFrame:CGRectMake(0, 0,16,48)];
  51. youpaipphoneTextField.leftView = leftPhoneView;
  52. youpaipphoneTextField.leftViewMode = UITextFieldViewModeAlways;
  53. UIView *rightView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 32.0f, 48)];
  54. UIButton *clearPhoneBtn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0,16,48)];
  55. clearPhoneBtn.adjustsImageWhenHighlighted = NO;
  56. [clearPhoneBtn setImage:[UIImage imageNamed:@"ic_clear"] forState:(UIControlStateNormal)];
  57. [clearPhoneBtn addTarget:self action:@selector(youpaifclearPhoneBtnClick) forControlEvents:(UIControlEventTouchUpInside)];
  58. [rightView addSubview:clearPhoneBtn];
  59. youpaipphoneTextField.rightView = rightView;
  60. youpaipphoneTextField.rightViewMode = UITextFieldViewModeAlways;
  61. youpaipphoneTextField.font = LCFont(13);
  62. youpaipphoneTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
  63. [[youpaipphoneTextField valueForKey:@"_clearButton"] setImage:[UIImage imageNamed:@"vqu_images_D_nick_clean"] forState:UIControlStateNormal];
  64. youpaipphoneTextField.keyboardType = UIKeyboardTypeNumberPad;
  65. [youpaipphoneTextField addTarget:self action:@selector(textFieldDidEditing:) forControlEvents:UIControlEventEditingChanged];
  66. NSMutableAttributedString* attrStr = [[NSMutableAttributedString alloc]initWithString:@"请输入手机号码"];
  67. [attrStr addAttribute:NSFontAttributeName value:LCFont(13) range:NSMakeRange(0, attrStr.length)];
  68. [attrStr addAttribute:NSForegroundColorAttributeName value:HexColorFromRGB(0xCFCFCF) range:NSMakeRange(0, attrStr.length)];
  69. youpaipphoneTextField.attributedPlaceholder = attrStr;
  70. youpaipphoneTextField.contentHorizontalAlignment=UIControlContentHorizontalAlignmentCenter;
  71. [bgV addSubview:youpaipphoneTextField];
  72. UITextField* youpaipcodeTextField = [[UITextField alloc]initWithFrame:CGRectMake(14,CGRectGetMaxY(youpaipphoneTextField.frame)+5, KScreenWidth-90, 48)];
  73. self.youpaipcodeTextField = youpaipcodeTextField;
  74. youpaipcodeTextField.backgroundColor = ZYBGGrayColor;
  75. youpaipcodeTextField.layer.cornerRadius = 5.0f;
  76. youpaipcodeTextField.layer.masksToBounds = YES;
  77. youpaipcodeTextField.tintColor = ZYPinkColor;
  78. //适配ios13 leftview sizefit
  79. UIView *leftCodeView = [[UIView alloc]initWithFrame:CGRectMake(0, 0,16,48)];
  80. youpaipcodeTextField.leftView = leftCodeView;
  81. youpaipcodeTextField.leftViewMode = UITextFieldViewModeAlways;
  82. youpaipcodeTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
  83. [[youpaipcodeTextField valueForKey:@"_clearButton"] setImage:[UIImage imageNamed:@"vqu_images_D_nick_clean"] forState:UIControlStateNormal];
  84. youpaipcodeTextField.font = LCFont(13);
  85. UIView *verRightView = [[UIView alloc]initWithFrame:CGRectMake(0,0,79 + 10,48)];
  86. UIButton* youpaipverifyBtn = [[UIButton alloc]initWithFrame:CGRectMake(0,(verRightView.mj_h - 28) / 2.0f,79,28)];
  87. self.youpaipverifyBtn = youpaipverifyBtn;
  88. youpaipverifyBtn.layer.cornerRadius = 14;
  89. youpaipverifyBtn.layer.masksToBounds = YES;
  90. youpaipverifyBtn.backgroundColor = HexColorFromRGB(0xDDDDDD);
  91. youpaipverifyBtn.titleLabel.font = LCFont(12);
  92. [youpaipverifyBtn setTitleColor:[UIColor whiteColor] forState:(UIControlStateNormal)];
  93. [youpaipverifyBtn setTitle:@"获取验证码" forState:(UIControlStateNormal)];
  94. youpaipverifyBtn.userInteractionEnabled = NO;
  95. youpaipverifyBtn.uxy_acceptEventInterval = 3.0;
  96. [youpaipverifyBtn addTarget:self action:@selector(youpaifsendVerCodeClick) forControlEvents:(UIControlEventTouchUpInside)];
  97. [verRightView addSubview:youpaipverifyBtn];
  98. youpaipcodeTextField.rightView = verRightView;
  99. youpaipcodeTextField.rightViewMode = UITextFieldViewModeAlways;
  100. youpaipcodeTextField.keyboardType = UIKeyboardTypeNumberPad;
  101. [youpaipcodeTextField addTarget:self action:@selector(textFieldDidEditing:) forControlEvents:UIControlEventEditingChanged];
  102. NSMutableAttributedString* attrStrCode = [[NSMutableAttributedString alloc]initWithString:@"请输入验证码"];
  103. [attrStrCode addAttribute:NSFontAttributeName value:LCFont(13) range:NSMakeRange(0, attrStrCode.length)];
  104. [attrStrCode addAttribute:NSForegroundColorAttributeName value:HexColorFromRGB(0xCFCFCF) range:NSMakeRange(0, attrStrCode.length)];
  105. youpaipcodeTextField.attributedPlaceholder = attrStrCode;
  106. youpaipcodeTextField.contentHorizontalAlignment=UIControlContentHorizontalAlignmentCenter;
  107. [bgV addSubview:youpaipcodeTextField];
  108. UITextField* youpaippwdTextField = [[UITextField alloc]initWithFrame:CGRectMake(14,CGRectGetMaxY(youpaipcodeTextField.frame)+5, KScreenWidth-90, 48)];
  109. youpaippwdTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
  110. [[youpaippwdTextField valueForKey:@"_clearButton"] setImage:[UIImage imageNamed:@"vqu_images_D_nick_clean"] forState:UIControlStateNormal];
  111. self.youpaippwdTextField = youpaippwdTextField;
  112. youpaippwdTextField.backgroundColor = ZYBGGrayColor;
  113. youpaippwdTextField.layer.cornerRadius = 5.0f;
  114. youpaippwdTextField.layer.masksToBounds = YES;
  115. youpaippwdTextField.tintColor = ZYPinkColor;
  116. //适配ios13 leftview sizefit
  117. UIView *leftPwdView = [[UIView alloc]initWithFrame:CGRectMake(0, 0,16,48)];
  118. youpaippwdTextField.leftView = leftPwdView;
  119. youpaippwdTextField.leftViewMode = UITextFieldViewModeAlways;
  120. youpaippwdTextField.textColor = HexColorFromRGB(0x333333);
  121. youpaippwdTextField.font = LCFont(15);
  122. UIView *rightPwdView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 26, 48)];
  123. UIButton* showBtn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0,16,48)];
  124. showBtn.adjustsImageWhenHighlighted = NO;
  125. [showBtn setImage:[UIImage imageNamed:@"vqu_images_sign_input3"] forState:(UIControlStateNormal)];
  126. [showBtn addTarget:self action:@selector(youpaifshowBtnClick:) forControlEvents:(UIControlEventTouchUpInside)];
  127. youpaippwdTextField.secureTextEntry = YES;
  128. [rightPwdView addSubview:showBtn];
  129. youpaippwdTextField.rightView = rightPwdView;
  130. youpaippwdTextField.rightViewMode = UITextFieldViewModeAlways;
  131. [youpaippwdTextField addTarget:self action:@selector(textFieldDidEditing:) forControlEvents:UIControlEventEditingChanged];
  132. NSMutableAttributedString* attrStrPwd = [[NSMutableAttributedString alloc]initWithString:@"请输入账户密码"];
  133. [attrStrPwd addAttribute:NSFontAttributeName value:LCFont(15) range:NSMakeRange(0, attrStrPwd.length)];
  134. [attrStrPwd addAttribute:NSForegroundColorAttributeName value:HexColorFromRGB(0xCFCFCF) range:NSMakeRange(0, attrStrPwd.length)];
  135. youpaippwdTextField.attributedPlaceholder = attrStrPwd;
  136. youpaippwdTextField.contentHorizontalAlignment=UIControlContentHorizontalAlignmentCenter;
  137. [bgV addSubview:youpaippwdTextField];
  138. UIButton* registerBtn = [[UIButton alloc]init];
  139. self.youpaipregisterBtn = registerBtn;
  140. registerBtn.userInteractionEnabled = NO;
  141. registerBtn.backgroundColor = HexColorFromRGB(0xCCCCCC);
  142. registerBtn.layer.cornerRadius = 5.0f;
  143. registerBtn.layer.masksToBounds = YES;
  144. registerBtn.titleLabel.font = LCFont17;
  145. [registerBtn setTitleColor:[UIColor whiteColor] forState:(UIControlStateNormal)];
  146. [registerBtn setTitle:@"确定" forState:(UIControlStateNormal)];
  147. [registerBtn addTarget:self action:@selector(youpaifloginBtnClick) forControlEvents:(UIControlEventTouchUpInside)];
  148. registerBtn.uxy_acceptEventInterval = 3.0;
  149. [bgV addSubview:registerBtn];
  150. [registerBtn makeConstraints:^(MASConstraintMaker *make) {
  151. make.top.equalTo(youpaippwdTextField.bottom).offset(30);
  152. make.centerX.equalTo(self.view.centerX);
  153. make.size.mas_equalTo(CGSizeMake(KScreenWidth-90, 48));
  154. }];
  155. UILabel *detailL= [[UILabel alloc] init];
  156. detailL.text = @"尊敬的用户,为保障您的账号安全,请绑定手机号码,绑定后可通过手机号+密码登录账号。如需帮助,请联系在线客服!";
  157. detailL.font = LCFont(11.0f);
  158. detailL.textColor = LCTextGray;
  159. detailL.numberOfLines = 0;
  160. [bgV addSubview:detailL];
  161. [detailL mas_makeConstraints:^(MASConstraintMaker *make) {
  162. make.left.offset(14.0f);
  163. make.right.offset(-14.0f);
  164. make.bottom.offset(-20.0f);
  165. }];
  166. }
  167. - (void)youpaifclearPhoneBtnClick{
  168. self.youpaipphoneTextField.text = @"";
  169. [self textFieldDidEditing:self.youpaipphoneTextField];
  170. }
  171. //监听输入的手机号码自动添加空格
  172. -(void)textFieldDidEditing:(UITextField *)textField{
  173. if ([self.youpaipphoneTextField.text isEqualToString:@""] || [self.youpaippwdTextField.text isEqualToString:@""]|| [self.youpaipcodeTextField.text isEqualToString:@""]){
  174. self.youpaipregisterBtn.backgroundColor = LCGray;
  175. [self.youpaipregisterBtn setBackgroundImage:nil forState:(UIControlStateNormal)];
  176. self.youpaipregisterBtn.userInteractionEnabled = NO;
  177. }else{
  178. [self.youpaipregisterBtn setBackgroundImage:[LCTools ColorImage:self.youpaipregisterBtn.frame.size FromColors:@[ZYGradientOneColor,ZYGradientTwoColor] ByGradientType:(GradientLeftToRight)] forState:(UIControlStateNormal)];
  179. self.youpaipregisterBtn.userInteractionEnabled = YES;;
  180. }
  181. if (textField == self.youpaipphoneTextField) {
  182. if (textField.text.length > self.youpaipphoneLength) {
  183. if (textField.text.length == 4 || textField.text.length == 9 ) {//输入
  184. NSMutableString * str = [[NSMutableString alloc ] initWithString:textField.text];
  185. [str insertString:@" " atIndex:(textField.text.length-1)];
  186. textField.text = str;
  187. }if (textField.text.length >= 13 ) {//输入完成
  188. textField.text = [textField.text substringToIndex:13];
  189. self.youpaipverifyBtn.userInteractionEnabled = YES;
  190. [self.youpaipverifyBtn setBackgroundColor:ZYPinkColor];
  191. [self.youpaipverifyBtn setTitleColor:HexColorFromRGB(0xffffff) forState:(UIControlStateNormal)];
  192. }
  193. self.youpaipphoneLength = textField.text.length;
  194. }else if (textField.text.length < self.youpaipphoneLength){//删除
  195. if (textField.text.length == 4 || textField.text.length == 9) {
  196. textField.text = [NSString stringWithFormat:@"%@",textField.text];
  197. textField.text = [textField.text substringToIndex:(textField.text.length-1)];
  198. }
  199. self.youpaipverifyBtn.userInteractionEnabled = NO;
  200. [self.youpaipverifyBtn setTitleColor:HexColorFromRGB(0x999999) forState:(UIControlStateNormal)];
  201. self.youpaipphoneLength = textField.text.length;
  202. }
  203. }
  204. }
  205. // 发送验证码
  206. -(void)youpaifsendVerCodeClick
  207. {
  208. NSString *phoneText = [self.youpaipphoneTextField.text stringByReplacingOccurrencesOfString:@" " withString:@""];
  209. if ([ZCRegularHelper regularPhoneNumber:phoneText]) {//首先手机格式保证正确
  210. WeakSelf;
  211. [LCHttpHelper requestWithURLString:PhoneCode parameters:@{@"mobile":phoneText,@"type":@"bind"} needToken:NO type:(HttpRequestTypePost) success:^(id responseObject) {
  212. NSDictionary* dict = (NSDictionary*)responseObject;
  213. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  214. if (code==0) {//成功
  215. [ZCHUDHelper showTitle:@"验证码已发送"];
  216. __block int timeout=120;
  217. dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
  218. dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
  219. dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
  220. dispatch_source_set_event_handler(_timer, ^{
  221. if(timeout<=0){
  222. dispatch_source_cancel(_timer);
  223. dispatch_async(dispatch_get_main_queue(), ^{
  224. [weakSelf.youpaipverifyBtn setTitle:@"获取验证码" forState:UIControlStateNormal];
  225. weakSelf.youpaipverifyBtn.userInteractionEnabled = YES;
  226. });
  227. }else{
  228. NSString *strTime = [NSString stringWithFormat:@"%.2dS",timeout];
  229. dispatch_async(dispatch_get_main_queue(), ^{
  230. //设置界面的按钮显示 根据自己需求设置
  231. [weakSelf.youpaipverifyBtn setTitle:strTime forState:UIControlStateNormal];
  232. weakSelf.youpaipverifyBtn.userInteractionEnabled = NO;
  233. });
  234. timeout--;
  235. }
  236. });
  237. dispatch_resume(_timer);
  238. }
  239. } failure:^(NSError *error) {
  240. }];
  241. }
  242. }
  243. // 是否显示密码
  244. -(void)youpaifshowBtnClick:(UIButton*)btn{
  245. if (btn.selected) {
  246. btn.selected = NO;
  247. [btn setImage:[UIImage imageNamed:@"vqu_images_sign_input3"] forState:(UIControlStateNormal)];
  248. self.youpaippwdTextField.secureTextEntry = YES;
  249. }else{
  250. btn.selected = YES;
  251. [btn setImage:[UIImage imageNamed:@"vqu_images_sign_input2"] forState:(UIControlStateNormal)];
  252. self.youpaippwdTextField.secureTextEntry = NO;
  253. }
  254. }
  255. /// 绑定
  256. - (void)youpaifloginBtnClick{
  257. __block NSString *phoneText = [self.youpaipphoneTextField.text stringByReplacingOccurrencesOfString:@" " withString:@""];
  258. if ([ZCRegularHelper regularPhoneNumber:phoneText]) {
  259. if ([ZCRegularHelper regularVerifyCode4:self.youpaipcodeTextField.text]) {
  260. NSMutableDictionary* params = [NSMutableDictionary dictionary];
  261. [params setObject:phoneText forKey:@"mobile"];
  262. [params setObject:self.youpaipcodeTextField.text forKey:@"phone_code"];
  263. [params setObject:self.youpaippwdTextField.text forKey:@"password"];
  264. WeakSelf;
  265. [LCHttpHelper requestWithURLString:BindPhone parameters:params needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
  266. NSDictionary* dict = (NSDictionary*)responseObject;
  267. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  268. if (code==0 && weakSelf.block) {//成功
  269. [weakSelf dismissViewControllerAnimated:YES completion:^{
  270. weakSelf.block(phoneText);
  271. }];
  272. }else{
  273. [ZCHUDHelper showTitle:[dict objectForKey:@"message"]];
  274. }
  275. } failure:^(NSError *error) {
  276. [ZCHUDHelper showTitle:error.localizedDescription];
  277. }];
  278. }
  279. }
  280. }
  281. @end