Commit 2062d29622ae36b0795b6c5ba656f719395344bf

Authored by iOS-Xiaowen
1 parent 946e033e

no message

CNLiveBLoginModule/Classes/View/CNLiveLoginTipsView.h deleted 100644 → 0
1 -//  
2 -// CNLiveLoginTipsView.h  
3 -// CNLiveLoginModule  
4 -//  
5 -// Created by CNLive-zxw on 2019/11/11.  
6 -// Copyright © 2019 cnlive. All rights reserved.  
7 -//  
8 -  
9 -#import <UIKit/UIKit.h>  
10 -  
11 -NS_ASSUME_NONNULL_BEGIN  
12 -  
13 -@interface CNLiveLoginTipsView : UIView  
14 -  
15 -+ (void)showCenterLoginViewWithVC:(UIViewController *)controller;  
16 -+ (void)hide;  
17 -  
18 -@end  
19 -  
20 -NS_ASSUME_NONNULL_END  
CNLiveBLoginModule/Classes/View/CNLiveLoginTipsView.m deleted 100644 → 0
1 -//  
2 -// CNLiveLoginTipsView.m  
3 -// CNLiveLoginModule  
4 -//  
5 -// Created by CNLive-zxw on 2019/11/11.  
6 -// Copyright © 2019 cnlive. All rights reserved.  
7 -//  
8 -  
9 -#import "CNLiveLoginTipsView.h"  
10 -#import "CNLiveLoginTextField.h"  
11 -#import "NSString+CNLiveExtension.h"  
12 -#import "NSString+Category.h"  
13 -#import "CNLiveUserAgreementManager.h"  
14 -#import "CNLiveCategory.h"  
15 -  
16 -#import "MJExtension.h"  
17 -#import "QMUIKit.h"  
18 -#import "YYKit.h"  
19 -#import "TIMAdapter.h"  
20 -#import "CommonLibrary.h"  
21 -#import <Masonry/Masonry.h>  
22 -  
23 -//#import "CNNavigationController.h"  
24 -#import "CNLiveChooseCountryController.h"  
25 -#import <CNLiveUserSystemSDK/CNLiveUserSystemCenter.h>  
26 -#import <CNLiveUserSystemSDK/CNLiveUserSystemTypeDef.h>  
27 -#import "CNUserInfoManager.h"  
28 -#import "CNLiveEnvironment.h"  
29 -  
30 -  
31 -#import "CNLiveThreeLoginView.h"  
32 -  
33 -  
34 -//三方登录  
35 -//#import "CNThreeLoginViewController.h"  
36 -//#import "CNLiveShareImageManager.h"  
37 -//#import "CNThreeLoginModel.h"  
38 -//#import "CNBindingManageRequest.h"  
39 -//#import "NSObject+TransformModel.h"  
40 -//#import "CNShareExtensionGroup.h"  
41 -//#import "CNLoginIUsernfoViewController.h"  
42 -  
43 -@interface CNLiveLoginTipsView()<UITextFieldDelegate,ChooseCountriesDelegate,CNLiveThreeLoginViewDelegate>{  
44 - dispatch_source_t _timer;  
45 - NSString * _codeStr;  
46 - NSString * _countryStr;  
47 -}  
48 -@property (nonatomic, strong) IMALoginParam *loginParam;  
49 -  
50 -@property (nonatomic, strong) UIImageView *whiteView;  
51 -@property (nonatomic, strong) UIButton *close;  
52 -  
53 -@property (nonatomic, strong) QMUILabel *countryLbl;  
54 -@property (nonatomic, strong) UIButton *countryBtn;  
55 -@property (nonatomic, strong) UIView *line;  
56 -  
57 -@property (nonatomic, strong) CNLiveLoginTextField *telTF;  
58 -@property (nonatomic, strong) CNLiveLoginTextField *codeTF;  
59 -@property (nonatomic, strong) UIButton *codeBtn;  
60 -@property (nonatomic, strong) YYLabel *protocolLab;  
61 -@property (nonatomic, strong) UIButton *login;  
62 -@property (nonatomic, strong) CNLiveThreeLoginView *threeLoginView;  
63 -@property (nonatomic, strong) CNLiveLoginTipsView *loginView;  
64 -  
65 -@end  
66 -  
67 -@implementation CNLiveLoginTipsView  
68 -#define XWKeyWindow [UIApplication sharedApplication].keyWindow  
69 -  
70 -static const CGFloat rowHeight = 30;  
71 -static const CGFloat margin = 15;  
72 -  
73 -#pragma mark - 单例  
74 -+ (instancetype)manager {  
75 - static CNLiveLoginTipsView *_singleton = nil;  
76 - static dispatch_once_t onceToken;  
77 - dispatch_once(&onceToken, ^{  
78 - //不能再使用alloc方法  
79 - //因为已经重写了allocWithZone方法,所以这里要调用父类的分配空间的方法  
80 - _singleton = [[super allocWithZone:NULL] init];  
81 - });  
82 - return _singleton;  
83 -  
84 -}  
85 -  
86 -+ (void)showCenterLoginViewWithVC:(UIViewController *)controller {  
87 - [CNLiveLoginTipsView manager].loginView = [[CNLiveLoginTipsView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];  
88 - [CNLiveLoginTipsView manager].loginView.backgroundColor = [UIColor colorWithWhite:0.2f alpha:0.4f];  
89 - [controller.view addSubview:[CNLiveLoginTipsView manager].loginView];  
90 -}  
91 -  
92 -#pragma mark - Init  
93 -- (instancetype)initWithFrame:(CGRect)frame{  
94 - if(self = [super initWithFrame:frame]){  
95 - _codeStr = @"86";  
96 - _countryStr = @"中国大陆";  
97 -  
98 - BOOL isAutoLogin = [IMAPlatform isAutoLogin];  
99 - if (isAutoLogin) {  
100 - _loginParam = [IMALoginParam loadFromLocal];  
101 -  
102 - } else {  
103 - _loginParam = [[IMALoginParam alloc] init];  
104 -  
105 - }  
106 -  
107 - [IMAPlatform configWith:_loginParam.config];  
108 - [self setUpUI];  
109 -// UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(closeBtn:)];  
110 -// [self addGestureRecognizer:tap];  
111 -  
112 - }  
113 - return self;  
114 -  
115 -}  
116 -#pragma mark - UI  
117 -- (void)setUpUI{  
118 - [self addSubview:self.whiteView];  
119 - [self addSubview:self.close];  
120 -  
121 - [self addSubview:self.countryLbl];  
122 - [self addSubview:self.countryBtn];  
123 - [self addSubview:self.line];  
124 -  
125 - [self addSubview:self.telTF];  
126 - [self addSubview:self.codeTF];  
127 - [self addSubview:self.codeBtn];  
128 -  
129 - [self addSubview:self.login];  
130 - [self addSubview:self.threeLoginView];  
131 - [self addSubview:self.protocolLab];  
132 - [self.protocolLab mas_makeConstraints:^(MASConstraintMaker *make) {  
133 - make.top.mas_equalTo(self.threeLoginView.mas_bottom).mas_offset(0);  
134 - make.bottom.mas_equalTo(self.whiteView.mas_bottom).mas_offset(-0);  
135 - make.left.mas_equalTo(self.countryLbl.mas_left).mas_offset(0);  
136 - make.right.mas_equalTo(self.countryBtn.mas_right).mas_offset(-0);  
137 -  
138 - }];  
139 -  
140 -}  
141 -- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {  
142 - [self endEditing:YES];  
143 -}  
144 -  
145 -#pragma mark - UITextFieldDelegate  
146 -- (void)textFieldDidChange:(UITextField *)textField {  
147 - if (![NSString isEmpty:_telTF.text] && ![NSString isEmpty:_codeTF.text]) {  
148 - _login.enabled = YES;  
149 -  
150 - }  
151 - else {  
152 - _login.enabled = NO;  
153 -  
154 - }  
155 -  
156 -}  
157 -  
158 -- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {  
159 - if ([textField isEqual:self.telTF]) {  
160 - NSInteger maxTextLength = 20;  
161 - if(string.length == 0) {  
162 - //判断是不是删除键  
163 - return YES;  
164 - }  
165 - else if(textField.text.length >= maxTextLength) {  
166 - //输入的字符个数大于11,则无法继续输入,返回NO表示禁止输入  
167 - NSLog(@"输入的字符个数大于20,忽略输入");  
168 - return NO;  
169 - }  
170 -// else if (!CNLiveStringIsNumber(string)) {  
171 -// //string复制的可能为特殊字符,过滤  
172 -// return NO;  
173 -// }  
174 - else if (textField.text.length + string.length > maxTextLength){  
175 - NSInteger length = textField.text.length;  
176 - NSInteger needLen = maxTextLength - length;  
177 - textField.text = [textField.text stringByAppendingString:[string substringToIndex:needLen]];  
178 - return NO;  
179 - }  
180 - else{  
181 - return YES;  
182 - }  
183 - }else if ([textField isEqual:self.codeTF]){  
184 - NSInteger maxTextLength = 6;  
185 - if(string.length == 0) {  
186 - //判断是不是删除键  
187 - return YES;  
188 - }  
189 - else if(textField.text.length >= maxTextLength) {  
190 - //输入的字符个数大于6,则无法继续输入,返回NO表示禁止输入  
191 - return NO;  
192 - }  
193 -// else if (!CNLiveStringIsNumber(string)) {  
194 -// //string复制的可能为特殊字符,过滤  
195 -// return NO;  
196 -// }  
197 - else if (textField.text.length + string.length > maxTextLength){  
198 - //如果textF.text + string > 6 截取6位  
199 -#warning 有个问题,光标没有及时更新到最后一位  
200 - NSInteger length = textField.text.length;  
201 - NSInteger needLen = maxTextLength - length;  
202 - textField.text = [textField.text stringByAppendingString:[string substringToIndex:needLen]];  
203 - return NO;  
204 - }  
205 - else{  
206 - return YES;  
207 - }  
208 - }else  
209 - {  
210 - return YES;  
211 - }  
212 -}  
213 -/*  
214 -// Only override drawRect: if you perform custom drawing.  
215 -// An empty implementation adversely affects performance during animation.  
216 -- (void)drawRect:(CGRect)rect {  
217 - // Drawing code  
218 -}  
219 -*/  
220 -#pragma mark - Lazy Loading  
221 -- (UIImageView *)whiteView{  
222 - if (!_whiteView) {  
223 - _whiteView = [[UIImageView alloc] initWithFrame:CGRectMake(([UIScreen mainScreen].bounds.size.width-287)/2.0, ([UIScreen mainScreen].bounds.size.height-396)/2.0, 287, 396)];  
224 - _whiteView.image = [UIImage imageNamed:@"tourists_login_bg"];  
225 - }  
226 - return _whiteView;  
227 -}  
228 -  
229 -- (UIButton *)close{  
230 - if (!_close) {  
231 - _close = [[UIButton alloc]initWithFrame:CGRectMake(CGRectGetMaxX(_whiteView.frame)-25-10, CGRectGetMinY(_whiteView.frame)+10, 25, 25)];  
232 - [_close setImage:[UIImage imageNamed:@"tourists_login_close"] forState:UIControlStateNormal];  
233 - [_close addTarget:self action:@selector(closeBtn:) forControlEvents:UIControlEventTouchUpInside];  
234 - }  
235 - return _close;  
236 -}  
237 -  
238 -- (QMUILabel *)countryLbl{  
239 - if (!_countryLbl){  
240 - _countryLbl = [[QMUILabel alloc] initWithFrame:CGRectMake(_whiteView.left+margin, _whiteView.top+100, 80, rowHeight)];  
241 - [_countryLbl setFont:UIFontMake(13)];  
242 - _countryLbl.textColor = [UIColor colorWithRed:49/255.0 green:49/255.0 blue:49/255.0 alpha:1.0];  
243 - _countryLbl.text = _countryStr;  
244 - _countryLbl.userInteractionEnabled = YES;  
245 - }  
246 - return _countryLbl;  
247 -}  
248 -  
249 -- (UIButton *)countryBtn{  
250 - if (!_countryBtn){  
251 - _countryBtn = [[UIButton alloc]initWithFrame:CGRectMake(kScreenWidth-_whiteView.left-15-70, _countryLbl.top, 70, _countryLbl.height)];  
252 - _countryBtn.titleLabel.font = UIFontMake(13);  
253 - [_countryBtn setTitleColor:[UIColor colorWithRed:49/255.0 green:49/255.0 blue:49/255.0 alpha:1.0] forState:UIControlStateNormal];  
254 - [_countryBtn setTitle:[NSString stringWithFormat:@"+%@", _codeStr] forState:UIControlStateNormal];  
255 - UIImage *image = [self getImageWithImageName:@"login_country" bundleName:@"CNLiveBLoginModule" targetClass:[self class]];  
256 - [_countryBtn setImage:image forState:UIControlStateNormal];  
257 - [_countryBtn addTarget:self action:@selector(countryBtn:) forControlEvents:UIControlEventTouchUpInside];  
258 - _countryBtn.userInteractionEnabled = YES;  
259 - //button图片的偏移量,距上左下右分别(0, 0, 0, 0)像素点  
260 - _countryBtn.imageEdgeInsets = UIEdgeInsetsMake(0, 60, 0, 0);  
261 - //button标题的偏移量,这个偏移量是相对于图片的  
262 - _countryBtn.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 10);  
263 - }  
264 - return _countryBtn;  
265 -}  
266 -- (UIView *)line{  
267 - if(!_line){  
268 - _line = [[UIView alloc] initWithFrame:CGRectMake(_countryLbl.left, _countryBtn.bottom, KScreenWidth - (2*_countryLbl.left), 0.5)];  
269 - _line.backgroundColor = [UIColor colorWithRed:235/255.0 green:235/255.0 blue:235/255.0 alpha:1.0];  
270 - }  
271 - return _line;  
272 -}  
273 -- (CNLiveLoginTextField *)telTF{  
274 - if (!_telTF) {  
275 - _telTF = [[CNLiveLoginTextField alloc] initWithFrame:CGRectMake(_countryLbl.left, _countryLbl.bottom + margin, KScreenWidth - (2*_countryLbl.left), rowHeight)];  
276 - _telTF.placeholderColor = KGray173Color;  
277 - _telTF.textColor = [UIColor blackColor];  
278 - _telTF.keyboardType = UIKeyboardTypeNumberPad;  
279 - _telTF.placeholder = @"请输入手机号号码";  
280 - _telTF.font = UIFontMake(13);  
281 - _telTF.clearButtonMode = UITextFieldViewModeAlways;  
282 - _telTF.textAlignment = NSTextAlignmentLeft;  
283 - [_telTF addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];  
284 - _telTF.delegate = self;  
285 - }  
286 - return _telTF;  
287 -}  
288 -- (CNLiveLoginTextField *)codeTF {  
289 - if (!_codeTF) {  
290 - _codeTF = [[CNLiveLoginTextField alloc] initWithFrame:CGRectMake(_telTF.left, _telTF.bottom + margin, 120, _telTF.height)];  
291 - _codeTF.keyboardType = UIKeyboardTypeNumberPad;  
292 - _codeTF.placeholder = @"请输入验证码";  
293 - _codeTF.textColor = [UIColor blackColor];  
294 - _codeTF.placeholderColor = KGray173Color;  
295 - _codeTF.font = UIFontMake(13);  
296 - _codeTF.textAlignment = NSTextAlignmentLeft;  
297 - [_codeTF addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];  
298 - _codeTF.clearButtonMode = UITextFieldViewModeWhileEditing;  
299 - _codeTF.delegate = self;  
300 - }  
301 - return _codeTF;  
302 -}  
303 -- (UIButton *)codeBtn{  
304 - if (!_codeBtn) {  
305 - _codeBtn = [[UIButton alloc]initWithFrame:CGRectMake(kScreenWidth-_whiteView.left-margin-58, _codeTF.top+(rowHeight-22)/2.0, 58, 22)];  
306 - _codeBtn.titleLabel.font = [UIFont systemFontOfSize:10.0];  
307 - [_codeBtn setBackgroundImage:[UIImage imageNamed:@"dl_yzman"] forState:UIControlStateNormal];  
308 - [_codeBtn setTitleColor:[UIColor colorWithRed:35/255.0 green:212/255.0 blue:30/255.0 alpha:1.0] forState:UIControlStateNormal];  
309 - [_codeBtn setBackgroundImage:nil forState:UIControlStateSelected];  
310 - [_codeBtn setTitleColor:[UIColor colorWithRed:35/255.0 green:212/255.0 blue:30/255.0 alpha:1.0] forState:UIControlStateSelected];  
311 - [_codeBtn addTarget:self action:@selector(codeBtn:) forControlEvents:UIControlEventTouchUpInside];  
312 - [_codeBtn setAdjustsImageWhenHighlighted:NO];  
313 - }  
314 - return _codeBtn;  
315 -}  
316 -- (UIButton *)login{  
317 - if (!_login) {  
318 - _login = [[UIButton alloc]initWithFrame:CGRectMake(([UIScreen mainScreen].bounds.size.width-180)/2.0, _codeTF.bottom + margin, 180, rowHeight)];  
319 - _login.backgroundColor = [UIColor colorWithRed:35/255.0 green:212/255.0 blue:30/255.0 alpha:1.0];  
320 - _login.titleLabel.font = [UIFont systemFontOfSize:14.0];  
321 - _login.layer.cornerRadius = 15;  
322 - _login.layer.masksToBounds = YES;  
323 - [_login setTitle:@"登录" forState:UIControlStateNormal];  
324 - [_login setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];  
325 - [_login addTarget:self action:@selector(loginBtn:) forControlEvents:UIControlEventTouchUpInside];  
326 - }  
327 - return _login;  
328 -}  
329 -  
330 -- (CNLiveThreeLoginView *)threeLoginView{  
331 - if (!_threeLoginView) {  
332 - _threeLoginView = [[CNLiveThreeLoginView alloc]initWithFrame:CGRectMake(_whiteView.left, _login.bottom+margin, _whiteView.width, 80)];  
333 - _threeLoginView.delegate = self;  
334 - }  
335 - return _threeLoginView;  
336 -}  
337 -  
338 -- (YYLabel *)protocolLab {  
339 - if (!_protocolLab) {  
340 - _protocolLab = [[YYLabel alloc] init];  
341 - _protocolLab.textAlignment = NSTextAlignmentCenter;  
342 -  
343 - NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:@"登录即代表阅读并同意《用户协议》及《隐私政策》"];  
344 - NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];  
345 - style.alignment = NSTextAlignmentCenter;//对齐方式  
346 - [text addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0, text.length)];  
347 -  
348 - text.color = UIColorMake(201, 202, 203);  
349 - text.font = UIFontMake(10);  
350 -  
351 - __weak typeof(self) weakSelf = self;  
352 - [text setTextHighlightRange:NSMakeRange(11, 4) color:[UIColor colorWithRed:35/255.0 green:212/255.0 blue:30/255.0 alpha:1.0] backgroundColor:[UIColor clearColor] tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) {  
353 - [weakSelf endEditing:YES];  
354 - [CNLiveUserAgreementManager jumpToAgreementH5WithType:CNLiveUserAgreementUser];  
355 - }];  
356 - [text setTextHighlightRange:NSMakeRange(text.length-5, 4) color:[UIColor colorWithRed:35/255.0 green:212/255.0 blue:30/255.0 alpha:1.0] backgroundColor:[UIColor clearColor] tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) {  
357 - [weakSelf endEditing:YES];  
358 - [CNLiveUserAgreementManager jumpToAgreementH5WithType:CNLiveUserAgreementPrivacy];  
359 - }];  
360 -  
361 - _protocolLab.attributedText = text;  
362 -  
363 - }  
364 -  
365 -  
366 - return _protocolLab;  
367 -}  
368 -  
369 -  
370 -#pragma mark - Action  
371 -//点击✘按钮调用方法  
372 -- (void)closeBtn:(UIButton *)btn {  
373 - [[CNLiveLoginTipsView manager].loginView removeFromSuperview];  
374 -}  
375 -  
376 -+ (void)hide {  
377 - [[CNLiveLoginTipsView manager].loginView removeFromSuperview];  
378 -}  
379 -- (void)codeBtn:(UIButton *)btn {  
380 -// [CNTools setFrmId];  
381 - if ([self.telTF.text isEqualToString:@""]) {  
382 - [QMUITips showWithText:@"请输入手机号" inView:XWKeyWindow hideAfterDelay:1.5];  
383 - [self cancelVerBtnChange];  
384 - return;  
385 - }  
386 -  
387 - [_codeTF becomeFirstResponder];  
388 - _codeTF.text = nil;  
389 - _codeBtn.userInteractionEnabled = NO;  
390 - [QMUITips showLoadingInView:XWKeyWindow];  
391 - [CNLiveUserSystemCenter verificationCodeType:VerificationCodeTypeShortcutLogin mobile:_telTF.text countryCode:_codeStr success:^(id result) {  
392 - _codeBtn.selected = YES;  
393 - [self startTimer];//倒计时结束,打开交互性  
394 - [QMUITips hideAllToastInView:XWKeyWindow animated:YES];  
395 - [QMUITips showWithText:@"验证码已发送" inView:XWKeyWindow hideAfterDelay:1.5];  
396 -  
397 - } failure:^(NSDictionary *errorDic) {  
398 - [QMUITips hideAllToastInView:XWKeyWindow animated:YES];  
399 - if ([errorDic[@"errorCode"] integerValue] == 408) {  
400 - [QMUITips showError:@"请输入正确的手机号" inView:XWKeyWindow hideAfterDelay:1.5];  
401 -  
402 - }else{  
403 - [QMUITips showError:errorDic[@"errorMessage"] inView:XWKeyWindow hideAfterDelay:1.5];  
404 - }  
405 - [self cancelVerBtnChange];//请求失败,复原按钮,打开交互性  
406 -  
407 - }];  
408 -  
409 -}  
410 -#pragma mark - 倒计时  
411 -//恢复原状  
412 -- (void)cancelVerBtnChange {  
413 - dispatch_async(dispatch_get_main_queue(), ^{  
414 - _codeBtn.selected = NO;  
415 - [_codeBtn setTitle:@"" forState:UIControlStateNormal];  
416 - [_codeBtn setBackgroundImage:[UIImage imageNamed:@"dl_yzman"] forState:UIControlStateNormal];  
417 - //设置界面的按钮显示  
418 - _codeBtn.layer.borderWidth = 0;  
419 - _codeBtn.userInteractionEnabled = YES;  
420 - });  
421 - if (_timer) {  
422 - dispatch_source_cancel(_timer);//取消定时器  
423 - }  
424 -}  
425 -  
426 -//开始倒计时  
427 -- (void)startTimer {  
428 - __block int timeout = 60; //倒计时时间  
429 -  
430 - dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);  
431 -  
432 - _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);  
433 -  
434 - dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行  
435 -  
436 - dispatch_source_set_event_handler(_timer, ^{  
437 -  
438 - if(timeout<=0){ //倒计时结束,关闭  
439 -  
440 - dispatch_source_cancel(_timer);  
441 -  
442 - dispatch_async(dispatch_get_main_queue(), ^{  
443 - _codeBtn.selected = NO;  
444 - [_codeBtn setTitle:@"" forState:UIControlStateNormal];  
445 - [_codeBtn setBackgroundImage:[UIImage imageNamed:@"dl_yzman"] forState:UIControlStateNormal];  
446 - //设置界面的按钮显示 根据自己需求设置  
447 - _codeBtn.layer.borderWidth = 0;  
448 - _codeBtn.userInteractionEnabled = YES;  
449 -  
450 - });  
451 -  
452 - }else{  
453 -  
454 - int seconds = timeout % 60;  
455 - NSString *strTime = [NSString stringWithFormat:@"%.2d", seconds];  
456 -  
457 - if(seconds == 0)strTime = [NSString stringWithFormat:@"%d",timeout];  
458 - dispatch_async(dispatch_get_main_queue(), ^{  
459 - //设置界面的按钮显示 根据自己需求设置  
460 - _codeBtn.selected = YES;  
461 - [_codeBtn setBackgroundImage:nil forState:UIControlStateNormal];  
462 - [_codeBtn setTitle:[NSString stringWithFormat:@"%@s",strTime] forState:UIControlStateSelected];  
463 - _codeBtn.layer.borderColor = UIColorMake(89, 210, 75).CGColor;  
464 - _codeBtn.layer.borderWidth = 1;  
465 - _codeBtn.layer.masksToBounds = YES;  
466 - _codeBtn.layer.cornerRadius = 11.0;  
467 - _codeBtn.userInteractionEnabled = NO;  
468 - });  
469 - timeout--;  
470 -  
471 - }  
472 - });  
473 -  
474 - dispatch_resume(_timer);  
475 -}  
476 -  
477 -- (void)countryBtn:(UIButton *)btn {  
478 - UIViewController *root = [UIApplication sharedApplication].delegate.window.rootViewController;  
479 - CNLiveChooseCountryController *vc = [[CNLiveChooseCountryController alloc] init];  
480 - vc.delegate = self;  
481 - vc.modalPresentationStyle = UIModalPresentationFullScreen;  
482 - [root presentViewController:vc animated:YES completion:nil];  
483 -  
484 -}  
485 -#pragma mark - CNLiveSelectCountryViewDelegate  
486 -- (void)chooseViewController:(CNLiveChooseCountryController *)controller countryName:(NSString *)countryName countryCode:(NSString *)countryCode{  
487 - _countryLbl.text = countryName;  
488 - _countryStr = countryName;  
489 - [_countryBtn setTitle:[NSString stringWithFormat:@"+%@",countryCode] forState:UIControlStateNormal];  
490 - _codeStr = countryCode;  
491 - NSLog(@"%@---%@",countryName,countryCode);  
492 -  
493 -}  
494 -  
495 -- (void)loginBtn:(UIButton *)btn {  
496 - if ([_telTF.text isEqualToString:@""]) {  
497 - [QMUITips showWithText:@"请输入手机号" inView:XWKeyWindow hideAfterDelay:1.5];  
498 - return;  
499 - }  
500 -  
501 - if ([_codeTF.text isEqualToString:@""]) {  
502 - [QMUITips showWithText:@"请输入验证码" inView:XWKeyWindow hideAfterDelay:1.5];  
503 - return;  
504 - }  
505 -  
506 - [self endEditing:YES];  
507 -  
508 - [QMUITips showLoading:@"登录中" inView:XWKeyWindow];  
509 -  
510 - __weak typeof(self) weakSelf = self;  
511 -// [CNLiveUserSystemCenter shortcutLoginWithUserName:_telTF.text countryCode:_codeStr verificationCode:_codeTF.text frmId:[CNTools getFrmId] success:^(id result) {  
512 -// __strong typeof(weakSelf) strongSelf = weakSelf;  
513 -// if(!strongSelf) return;  
514 -// // 连接IM  
515 -// [strongSelf connectionIM:result];  
516 -//  
517 -// } failure:^(NSDictionary *errorDic) {  
518 -// [QMUITips hideAllToastInView:AppKeyWindow animated:YES];  
519 -// [QMUITips showError:[errorDic objectForKey:@"errorMessage"] inView:AppKeyWindow hideAfterDelay:1.5];  
520 -//  
521 -// }];  
522 -  
523 -}  
524 -  
525 -#pragma mark - CNLiveThreeLoginViewDelegate  
526 -//- (void)clickedButton:(CNLiveThreeLoginView *)view type:(CNLiveSendAuthResp)type{  
527 -// if(![CNLiveNetworking isNetworking]){  
528 -// [QMUITips showError:@"无法连接网络" inView:AppKeyWindow hideAfterDelay:1.5];  
529 -// return ;  
530 -// }  
531 -// [self endEditing:YES];  
532 -// __weak typeof(self) weakSelf = self;  
533 -// [CNLiveShareImageManager send:type authRespBlock:^(CNLiveSendAuthResp type, CNLiveThirdPartyModel *userInfo, NSError *error) {  
534 -// __strong typeof(weakSelf) strongSelf = weakSelf;  
535 -// if(!strongSelf) return;  
536 -// if(error){  
537 -// [QMUITips hideAllToastInView:AppKeyWindow animated:YES];  
538 -// if(error.code == 10000){  
539 -// //用户取消  
540 -// }else{  
541 -// [QMUITips showError:@"登录失败" inView:AppKeyWindow hideAfterDelay:1.5];  
542 -// }  
543 -// return ;  
544 -// }  
545 -// CNThreeLoginModel *model = [CNThreeLoginModel cn_transformModelFromModel:userInfo];  
546 -// model.countryName = strongSelf->_countryStr;  
547 -// model.countryCode = strongSelf->_codeStr;  
548 -// model.frmId = [CNTools getFrmId];  
549 -// switch (type) {  
550 -// case CNLiveSendAuthRespWX:  
551 -// {  
552 -// model.thirdPartyPlat = @"3";  
553 -// }  
554 -// break;  
555 -// case CNLiveSendAuthRespQQ:  
556 -// {  
557 -// model.thirdPartyPlat = @"2";  
558 -// }  
559 -// break;  
560 -// case CNLiveSendAuthRespWB:  
561 -// {  
562 -// model.thirdPartyPlat = @"1";  
563 -// }  
564 -// break;  
565 -// }  
566 -// [strongSelf thirdPartyLoginWithType:type model:model];  
567 -//  
568 -// }];  
569 -//  
570 -//}  
571 -  
572 -//- (void)thirdPartyLoginWithType:(CNLiveSendAuthResp)type model:(CNThreeLoginModel *)model{  
573 -// [QMUITips showLoadingInView:AppKeyWindow];  
574 -// __weak typeof(self) weakSelf = self;  
575 -// [CNBindingManageRequest thirdPartyLoginWithType:type model:model block:^(NSURLSessionTask * _Nonnull requestTask, id _Nonnull responseObject, NSError * _Nonnull error) {  
576 -// __strong typeof(weakSelf) strongSelf = weakSelf;  
577 -// if(!strongSelf) return;  
578 -// [QMUITips hideAllToastInView:AppKeyWindow animated:YES];  
579 -// if ([responseObject isKindOfClass:[NSDictionary class]] && [responseObject[@"errorCode"] isEqualToString:@"42013"]) {  
580 -// //未注册  
581 -// CNThreeLoginViewController *vc = [[CNThreeLoginViewController alloc]initWithModel:model];  
582 -// __weak typeof(strongSelf) weakSelf = strongSelf;  
583 -// vc.block = ^(NSString * _Nonnull countryName, NSString * _Nonnull countryCode) {  
584 -// __strong typeof(weakSelf) strongSelf = weakSelf;  
585 -// if(!strongSelf) return;  
586 -// strongSelf->_countryLbl.text = countryName;  
587 -// strongSelf->_countryStr = countryName;  
588 -// strongSelf->_countryLbl.text = [NSString stringWithFormat:@"+%@",countryCode];  
589 -// strongSelf->_codeStr = countryCode;  
590 -// };  
591 -// vc.hidesBottomBarWhenPushed = YES;  
592 -// CNNavigationController *nav = [[CNNavigationController alloc] initWithRootViewController:vc];  
593 -// [[AppDelegate sharedAppDelegate].topViewController presentViewController:nav animated:YES completion:^{  
594 -//  
595 -// }];  
596 -//  
597 -// }  
598 -// else if ([responseObject isKindOfClass:[NSDictionary class]] && [responseObject[@"errorCode"] isEqualToString:@"0"]) {  
599 -// //登录成功  
600 -// // 连接IM  
601 -// [strongSelf connectionIM:responseObject];  
602 -// }  
603 -// else if ([responseObject isKindOfClass:[NSDictionary class]] ) {  
604 -// [QMUITips showError:responseObject[@"errorMessage"] inView:AppKeyWindow hideAfterDelay:1.5];  
605 -// }  
606 -// else{  
607 -// [QMUITips hideAllToastInView:AppKeyWindow animated:YES];  
608 -// [QMUITips showError:@"登录失败" inView:AppKeyWindow hideAfterDelay:1.5];  
609 -// }  
610 -// }];  
611 -//  
612 -//}  
613 -//- (void)connectionIM:(id)result{  
614 -// weakself  
615 -// NSLog(@"result:%@",result);  
616 -//  
617 -// NSMutableDictionary *resDic = [NSMutableDictionary dictionaryWithDictionary:result[@"data"]];  
618 -// NSString *deFaceUrl = [resDic objectForKey:@"faceUrl"];  
619 -// NSString *faceUrl = @"";  
620 -// if ([deFaceUrl containsString:@"/mobile/images/mobilehead/default/"]) {  
621 -// faceUrl = CNLiveNetAddDefaultHead;//网家家默认头像地址  
622 -// [resDic setValue:faceUrl forKey:@"faceUrl"];  
623 -// }  
624 -// [CNUserInfoManager saveUserinfoDic:resDic];  
625 -// [CNShareExtensionGroup writeMyInfoToShareGroup];  
626 -// //连接IM  
627 -// [_loginParam getTIMLoginToken:CNUserShareModel.uid successBlock:^(NSString *token) {  
628 -//  
629 -// _loginParam.identifier = CNUserShareModel.uid;  
630 -// _loginParam.userSig = token;  
631 -// _loginParam.tokenTime = [[NSDate date] timeIntervalSince1970];  
632 -//  
633 -// [[IMAPlatform sharedInstance] login:_loginParam succ:^{  
634 -// [NBSAppAgent setUserIdentifier:[CNLiveBusinessTools getSidIdfv]];  
635 -// [QMUITips hideAllToastInView:AppKeyWindow animated:YES];  
636 -// [AppDelegate sharedAppDelegate].loginPrepositionUrl = @"judgeGiftUrl";  
637 -// [QMUITips showSucceed:@"登录成功" inView:AppKeyWindow hideAfterDelay:1.5];  
638 -// [_loginParam saveToLocal];  
639 -// [[AppDelegate sharedAppDelegate] registNotification];  
640 -// [[IMAPlatform sharedInstance] configHost:_loginParam];  
641 -// [IMAPlatform sharedInstance].didConnectSuccess = YES;  
642 -// //电商  
643 -// NSString *userID = CNUserShareModel.uid;  
644 -// [[DSCnliveShopSDKManager sharedManager] loginUser:userID];  
645 -// //设置APP已活跃  
646 -// [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"is_Active_Application"];  
647 -// [[NSUserDefaults standardUserDefaults] synchronize];  
648 -//  
649 -//  
650 -// [AppDelegate sharedAppDelegate].loginAlert = YES;  
651 -// if ([result[@"data"][@"isNewUser"] intValue] == 0) {  
652 -// //老用户  
653 -// [[AppDelegate sharedAppDelegate] enterMainUI];  
654 -// [[AppDelegate sharedAppDelegate] registNotification];  
655 -//  
656 -// }  
657 -// else {  
658 -// //新用户  
659 -// [OpenInstallSDK reportRegister];  
660 -// CNLoginIUsernfoViewController *vc = [[CNLoginIUsernfoViewController alloc] init];  
661 -// NSString *tel = _telTF.text;  
662 -// if(_telTF.text.length == 11){  
663 -// tel = [_telTF.text stringByReplacingCharactersInRange:NSMakeRange(3, 4) withString:@"XXXX"];  
664 -// }  
665 -// NSLog(@"tel:%@",tel);  
666 -// vc.mobileStr = tel;  
667 -// [[AppDelegate sharedAppDelegate] presentViewController:vc animated:NO completion:NULL];  
668 -// }  
669 -// [[NSNotificationCenter defaultCenter] postNotificationName:kCNLive_LoginSuccess object:nil];  
670 -//  
671 -// [CNDSShopActionViewModel networkParamAction];  
672 -//  
673 -// [[IMAPlatform sharedInstance].host asyncSetAllowType:TIM_FRIEND_NEED_CONFIRM succ:^{  
674 -// NSLog(@"asyncSetAllowType Suc");  
675 -// [_loginParam saveToLocal];  
676 -//  
677 -// } fail:^(int code, NSString *msg) {  
678 -// NSLog(@"asyncSetAllowType failed : %@", msg);  
679 -// }];  
680 -//  
681 -// } fail:^(int code, NSString *msg) {  
682 -// NSLog(@"login failed : %@", msg);  
683 -// if (code == 6208) {  
684 -// //离线被踢下线重新登录  
685 -//// [weakSelf resumeLogin];  
686 -// }  
687 -// else  
688 -// [QMUITips showError:msg inView:AppKeyWindow hideAfterDelay:1.5];  
689 -// [QMUITips hideAllToastInView:AppKeyWindow animated:YES];  
690 -// }];  
691 -//  
692 -// } failedBlock:^(int code, NSString *errorMsg) {  
693 -// [QMUITips hideAllToastInView:AppKeyWindow animated:YES];  
694 -//  
695 -// }];  
696 -//}  
697 -  
698 -@end