美文网首页iOS Developer
ios 封装获取验证码

ios 封装获取验证码

作者: 追梦少年22 | 来源:发表于2016-10-18 22:57 被阅读0次

在开发应用中,我们有很多时候都用到注册或者找回密码,我们都需要获取验证码,在很多时候我们使用起来都会在使用处进行方法实现,那样使得代码的耦合性降低,最近在开发中我也遇到这样的问题,所以对其进行 一个简单的封装首先,我们创建一个继承于NSObject的类verification

在其的.h 中我们创建几个方法

+(verification *)shareVer;

-(void )verificationAction:(UITextField *)phoneText verBtn:(UIButton *)verbtn;

-(NSString *)string;

然后在其.m中进行方法实现,这里我已倒计60秒为例

1.实例变量初始化

+(verification *)shareVer{

static dispatch_once_t onceToken;

static GJKverification *manager = nil;

dispatch_once(&onceToken, ^{

manager = [[verification alloc] init];

});

return manager;

}

2.获取验证码方法实现

-(void)verificationAction:(UITextField *)phoneText verBtn:(UIButton *)verbtn {

NSString *mobile = phoneText.text;

if (![Utils isAValidChinaMobileNumber:mobile]) {

[MBHUDHelper showWarningWithText:@"请输入正确的手机号"];

return ;

}

NSDictionary *dict = @{@"mobile" : phoneText.text};

// 调用查询手机号的接口

if ([[responseObject objectForKey:@"data"] integerValue]) {

[MBHUDHelper showWarningWithText:@"该手机号已经被注册"];

[self resumeVerifyButtonStatus:phoneText verBtn:verbtn];

return ;

} else {

[self setCountDownState:verbtn mobileText:phoneText];

NSString *verificationUrl = [NSString stringWithFormat:@"%@/%@",kMobileRegister, mobile];

//调用获取验证码的接口

[ success:^(id responseObject) {

self.verfString = [responseObject objectForKey:@"data"];

NSLog(@"验证码%@",self.verfString);

} failure:^(NSError *error, GJKError *JJError) {

}];

}

} failure:^(NSError *error, GJKError *JJError) {

}];

}

3.逻辑关系处理

- (void)stopTimer{

if (self.countDownTimer != nil) {

[self.countDownTimer invalidate];

self.countDownTimer = nil;

}

}

-(void)setCountDownState:(UIButton *)verbtn  mobileText:(UITextField *)phoneTextField{

self.stopTime = [[NSDate date] timeIntervalSince1970];

self.stopTime += kMaxRemainSecond;

verbtn.enabled = NO;

int nowSince = [[NSDate date] timeIntervalSince1970];

NSString *str = [NSString stringWithFormat:@"%ds后失效",self.stopTime - nowSince];

[verbtn setBackgroundImage:[UIImage imageNamed:@"huoquyanzhengma"] forState:UIControlStateNormal];

[verbtn setTitle:str forState:UIControlStateNormal];

[self stopTimer];

self.countDownTimer = [NSTimer scheduledTimerWithTimeInterval:1.0f block:^{

[self countDownAction:verbtn mobileText:phoneTextField];

} repeats:YES];

}

- (void)countDownAction:(UIButton*)verbtn mobileText:(UITextField *)phoneTextField{

if ([[NSDate date] timeIntervalSince1970] > self.stopTime) {

[self resumeVerifyButtonStatus:phoneTextField verBtn:verbtn];

} else {

[self showCurrentRemainSecond:verbtn];

}

}

- (void)showCurrentRemainSecond:(UIButton *)verbtn {

int nowSince = [[NSDate date] timeIntervalSince1970];

[verbtn setBackgroundImage:[UIImage imageNamed:@"huoquyanzhengma"] forState:UIControlStateNormal];

NSString *str = [NSString stringWithFormat:@"%ds后失效",self.stopTime - nowSince];

[verbtn setTitle:str forState:UIControlStateNormal];

}

- (void)resumeVerifyButtonStatus:(UITextField*)phoneTextField verBtn:(UIButton *)verbtn{

[self stopTimer];

verbtn.enabled = YES;

phoneTextField.enabled = YES;

[verbtn setBackgroundImage:[UIImage imageNamed:@"dianjihuoqu"] forState:UIControlStateNormal];

[verbtn setTitle:@"" forState:UIControlStateNormal];

}

-(NSString *)string {

return self.verfString;

}

相关文章

网友评论

    本文标题:ios 封装获取验证码

    本文链接:https://www.haomeiwen.com/subject/jjwtuttx.html