本验证码是基于sharSDK的一个实现,需要在项目中导入shareSDK框架
//
//
JLRegisterViewController.m
// 短信验证
//
// Created by 袁俊亮 on 15/6/26.
// Copyright (c) 2015年 qiji. All rights reserved.
//
#import " QJRegisterViewController.h "
#import " WXApi.h "
#import <SMS_SDK/SMS_SDK.h>
#define statusBarHeight 20
#define textFieldMargin 10 // 两个输入框之间的间距
#define timeCount 60 // 倒计时长
static int count = 0;
@interface QJRegisterViewController()<UIAlertViewDelegate,WXApiDelegate, UITextFieldDelegate>
{
NSTimer* _showRepeatButtonTimer; // 显示重新发送按钮倒计时
NSTimer* _updateTime; // 更新倒计时label
UIAlertView *_notGetSMSAlert; // 没有搜到验证码重新发送弹窗
UIAlertView *_backButtonClickAlert; // 点击返回按钮弹窗
}
@property(nonatomic, weak) UITextField *telField; // 手机号码
@property (nonatomic, weak) UITextField *verifyField; // 验证码
@property (nonatomic, weak) UIButton *loginBtn; // 登录按钮
@property(nonatomic,strong) UITextField* areaCodeField; // 区号
@property (nonatomic, weak) UIButton *icon; // 头像
@property (nonatomic, weak) NSString *str; // alert提示信息
@property (nonatomic, weak) UIButton *verifyRightView; // 获取验证码按钮
@end
@implementation QJRegisterViewController
- ( void)viewDidLoad
{
// 配置
_areaCodeField.text=[NSString stringWithFormat: @" +%@ ",@ 86];
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithName: @" background "]];
// 布局子控件
[self setupSubViews];
}
/* *
* 布局子控件
*/
- ( void)setupSubViews
{
#warning 这里需要根据图片的大小大小来动态确定各控件的frame。这里还没有设置icon的图片
// 创建LOGO
CGFloat logoX = self.view.width * 0.5 - self.icon.currentBackgroundImage.size.width * 0.5;
CGFloat logoY = 100;
CGFloat logoW = self.icon.currentBackgroundImage.size.width;
CGFloat logoH = self.icon.currentBackgroundImage.size.height;
UIButton *icon = [[UIButton alloc] initWithFrame:CGRectMake(logoX, logoY, logoW, logoH)];
icon.backgroundColor = [UIColor blueColor];
[self.view addSubview:icon];
self.icon = icon;
// 创建手机号码输入框
CGFloat telFieldX = self.view.width * 0.5 - 115;
CGFloat telFieldY = self.icon.height + self.icon.currentBackgroundImage.size.height + 84;
CGFloat telFieldW = 230;
CGFloat telFieldH = 40;
UITextField *telField = [[UITextField alloc] initWithFrame:CGRectMake(telFieldX, telFieldY, telFieldW, telFieldH)];
telField.placeholder = @" 请输入手机号码 ";
[self creatTextFieldLeftViewWithTextfield:telField andLeftViewImageName: @" tel_leftIcon "];
self.telField = telField;
// 创建验证码输入框
CGFloat verifyFieldX = telFieldX;
CGFloat verifyFieldY = telFieldY + telFieldH + textFieldMargin;
CGFloat verifyFieldW = telFieldW;
CGFloat verifyFieldH = telFieldH;
UITextField *verifyField = [[UITextField alloc] initWithFrame:CGRectMake(verifyFieldX, verifyFieldY, verifyFieldW, verifyFieldH)];
verifyField.placeholder = @" 请输入手机验证码 ";
[self creatTextFieldLeftViewWithTextfield:verifyField andLeftViewImageName: @" verify_leftIcon "]; // 添加左边图标
self.verifyField = verifyField;
// 添加获取验证码按钮
UIButton *verifyRightView = [[UIButton alloc] init];
[verifyRightView setBackgroundImage:[UIImage imageWithName: @" verify_rightNormal "] forState:UIControlStateNormal];
[verifyRightView setBackgroundImage:[UIImage imageWithName: @" verify_right_highlighted "] forState:UIControlStateHighlighted];
[verifyRightView setTitle: @" 获取验证码 " forState:UIControlStateNormal];
verifyRightView.font = [UIFont boldSystemFontOfSize: 10];
verifyRightView.width = verifyRightView.currentBackgroundImage.size.width;
verifyRightView.height = verifyRightView.currentBackgroundImage.size.height;
verifyRightView.frame = CGRectMake( 0, 0, verifyRightView.width, verifyRightView.height);
verifyRightView.contentMode = UIViewContentModeCenter;
verifyField.rightViewMode = UITextFieldViewModeAlways;
verifyField.rightView = verifyRightView;
self.verifyRightView = verifyRightView;
[verifyRightView addTarget:self action:@selector(verifyClick) forControlEvents:UIControlEventTouchUpInside]; // 点击获取验证码
// 创建登录按钮
CGFloat loginBtnX = telFieldX;
CGFloat loginBtnY = verifyFieldY + verifyFieldH + 35;
CGFloat loginBtnW = telFieldW;
CGFloat loginBtnH = 42;
UIButton *loginBtn = [[UIButton alloc] initWithFrame:CGRectMake(loginBtnX, loginBtnY, loginBtnW, loginBtnH)];
[loginBtn setBackgroundImage:[UIImage imageWithName: @" login "] forState:UIControlStateNormal];
[loginBtn setBackgroundImage:[UIImage imageWithName: @" login_highlighted "] forState:UIControlStateHighlighted];
[self.view addSubview:loginBtn];
self.loginBtn = loginBtn;
[loginBtn addTarget:self action:@selector(login) forControlEvents:UIControlEventTouchUpInside]; // 点击获取验证码
// 创建一个导航栏
UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake( 0, 0+statusBarHeight, self.view.frame.size.width, 44)];
UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:nil];
UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithTitle: @" 返回 "
style:UIBarButtonItemStyleBordered
target:self
action:@selector(clickLeftButton)];
[navigationItem setTitle:NSLocalizedString( @" register ", nil)];
[navigationBar pushNavigationItem:navigationItem animated:NO];
[navigationItem setLeftBarButtonItem:leftButton];
[self.view addSubview:navigationBar];
}
/* *
* 创建TextFieldLeftView
*/
- ( void)creatTextFieldLeftViewWithTextfield:(UITextField *)textField andLeftViewImageName:(NSString *)name
{
textField.borderStyle = UITextBorderStyleRoundedRect;
textField.keyboardType = UIKeyboardTypeNumberPad;
[textField becomeFirstResponder];
// 输入框左边图标
UIImageView *leftView = [[UIImageView alloc] init];
leftView.image = [UIImage imageWithName:name];
leftView.width = leftView.image.size.width + 20;
leftView.height = leftView.image.size.height;
leftView.frame = CGRectMake( 14, 12, leftView.width, leftView.height);
leftView.contentMode = UIViewContentModeCenter;
textField.leftView = leftView;
textField.leftViewMode = UITextFieldViewModeAlways;
textField.clearButtonMode = UITextFieldViewModeAlways; // 清除按钮常显示
textField.backgroundColor = [UIColor colorWithWhite: 1.0 alpha: 0.3];
textField.font = [UIFont systemFontOfSize: 12];
[self.view addSubview:textField];
}
#pragma mark - buttonClicks
/* *
* 点击获取验证码
*/
- ( void)verifyClick
{
// 如果手机号长度不为11位,提示号码不正确
if (self.telField.text.length!= 11)
{
// 手机号码不正确
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:NSLocalizedString( @" notice ", nil)
message:NSLocalizedString( @" errorphonenumber ", nil)
delegate:self
cancelButtonTitle:NSLocalizedString( @" sure ", nil)
otherButtonTitles:nil, nil];
[alert show];
return;
}
// 弹窗显示提示信息
NSString* str=[NSString stringWithFormat: @" %@:%@ ",NSLocalizedString( @" willsendthecodeto ", nil),self.telField.text];
QJLog( @" %@ ",self.telField.text);
_str=[NSString stringWithFormat: @" %@ ",self.telField.text];
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:NSLocalizedString( @" surephonenumber ", nil)
message:str delegate:self
cancelButtonTitle:NSLocalizedString( @" cancel ", nil)
otherButtonTitles:NSLocalizedString( @" sure ", nil), nil];
[alert show];
}
/* *
* 弹出控制器
*/
- ( void)clickLeftButton
{
[self dismissViewControllerAnimated:YES completion:nil];
}
/* *
* 退出键盘
*/
- ( void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *) event
{
[self.view endEditing:YES];
}
#pragma mark - UIAlertDelegate
- ( void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if ( 1==buttonIndex)
{
[SMS_SDK getVerificationCodeBySMSWithPhone:self.telField.text zone: @" 86 " result:^(SMS_SDKError *error) {
if (!error) {
#warning 这里填写验证码发送后的执行方法
[self getVerify];
} else{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @" 错误 " message:[NSString stringWithFormat: @" 状态码:%zi ,错误描述:%@ ",error.errorCode,error.errorDescription] delegate:self cancelButtonTitle: @" 确定 " otherButtonTitles:nil, nil];
[alert show];
}
}];
}
if (alertView==_notGetSMSAlert)
{
if ( 1==buttonIndex)
{
QJLog( @" 重发验证码 ");
[SMS_SDK getVerifyCodeByPhoneNumber:self.telField.text AndZone: @" 86 " result:^( enum SMS_GetVerifyCodeResponseState state)
{
if ( 1==state)
{
QJLog( @" block 获取验证码成功 ");
}
else if( 0==state)
{
QJLog( @" block 获取验证码失败 ");
NSString* str=[NSString stringWithFormat:NSLocalizedString( @" codesenderrormsg ", nil)];
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:NSLocalizedString( @" codesenderrtitle ", nil) message:str delegate:self cancelButtonTitle:NSLocalizedString( @" sure ", nil) otherButtonTitles:nil, nil];
[alert show];
}
else if (SMS_ResponseStateMaxVerifyCode==state)
{
NSString* str=[NSString stringWithFormat:NSLocalizedString( @" maxcodemsg ", nil)];
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:NSLocalizedString( @" maxcode ", nil) message:str delegate:self cancelButtonTitle:NSLocalizedString( @" sure ", nil) otherButtonTitles:nil, nil];
[alert show];
}
else if(SMS_ResponseStateGetVerifyCodeTooOften==state)
{
NSString* str=[NSString stringWithFormat:NSLocalizedString( @" codetoooftenmsg ", nil)];
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:NSLocalizedString( @" notice ", nil) message:str delegate:self cancelButtonTitle:NSLocalizedString( @" sure ", nil) otherButtonTitles:nil, nil];
[alert show];
}
}];
}
}
if (alertView==_backButtonClickAlert) {
if ( 0==buttonIndex)
{
[self dismissViewControllerAnimated:YES completion:^{
[_updateTime invalidate];
[_showRepeatButtonTimer invalidate];
}];
}
}
}
/* *
* 等待验证码
*/
- ( void)getVerify
{
[_showRepeatButtonTimer invalidate]; //
[_updateTime invalidate];
count = 0;
// 显示重新发送按钮
NSTimer *showRepeatButtonTimer=[NSTimer scheduledTimerWithTimeInterval:timeCount
target:self
selector:@selector(showRepeatButton)
userInfo:nil
repeats:YES];
// 倒计时label
NSTimer *updateTime = [NSTimer scheduledTimerWithTimeInterval: 1
target:self
selector:@selector(updateTime)
userInfo:nil
repeats:YES];
_showRepeatButtonTimer = showRepeatButtonTimer;
_updateTime = updateTime;
}
/* *
* 显示重新发送按钮
*/
-( void)showRepeatButton{
[self.verifyRightView setTitle: @" 重新发送 " forState:UIControlStateNormal];
[_showRepeatButtonTimer invalidate];
return;
}
- ( void)leftButtonClick
{
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:NSLocalizedString( @" notice ", nil)
message:NSLocalizedString( @" codedelaymsg ", nil)
delegate:self
cancelButtonTitle:NSLocalizedString( @" back ", nil)
otherButtonTitles:NSLocalizedString( @" wait ", nil), nil];
_backButtonClickAlert=alert;
[alert show];
}
/* *
* 登录
*/
- ( void)login
{
// 验证号码
// 验证成功后 获取通讯录 上传通讯录
[self.view endEditing:YES];
if(self.verifyField.text.length!= 4)
{
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:NSLocalizedString( @" notice ", nil)
message:NSLocalizedString( @" verifycodeformaterror ", nil)
delegate:self
cancelButtonTitle: @" 确定 "
otherButtonTitles:nil, nil];
[alert show];
}
else
{
[SMS_SDK commitVerifyCode:self.verifyField.text result:^( enum SMS_ResponseState state) {
if ( 1==state)
{
NSString* str=[NSString stringWithFormat:NSLocalizedString( @" verifycoderightmsg ", nil)];
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:NSLocalizedString( @" verifycoderighttitle ", nil)
message:str
delegate:self
cancelButtonTitle:NSLocalizedString( @" sure ", nil)
otherButtonTitles:nil, nil];
[alert show];
}
else if( 0==state)
{
NSString* str=[NSString stringWithFormat:NSLocalizedString( @" verifycodeerrormsg ", nil)];
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:NSLocalizedString( @" verifycodeerrortitle ", nil)
message:str
delegate:self
cancelButtonTitle:NSLocalizedString( @" sure ", nil)
otherButtonTitles:nil, nil];
[alert show];
}
}];
}
}
/* *
* 没有收到验证码,重新发送验证码
*/
- ( void)CannotGetSMS
{
NSString* str=[NSString stringWithFormat: @" %@:%@ ",NSLocalizedString( @" cannotgetsmsmsg ", nil) ,self.telField.text];
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:NSLocalizedString( @" surephonenumber ", nil) message:str delegate:self cancelButtonTitle:NSLocalizedString( @" cancel ", nil) otherButtonTitles:NSLocalizedString( @" sure ", nil), nil];
_notGetSMSAlert=alert;
[alert show];
}
/* *
* 更新时间label
*/
-( void)updateTime
{
count++;
if (count >= timeCount)
{
[_updateTime invalidate];
return;
}
NSString *updateTimeStr =[NSString stringWithFormat: @" %@%i%@ ",NSLocalizedString( @" timelablemsg ", nil),timeCount-count,NSLocalizedString( @" second ", nil)];
[self.verifyRightView setTitle:updateTimeStr forState:UIControlStateNormal];
}
@end
// 短信验证
//
// Created by 袁俊亮 on 15/6/26.
// Copyright (c) 2015年 qiji. All rights reserved.
//
#import " QJRegisterViewController.h "
#import " WXApi.h "
#import <SMS_SDK/SMS_SDK.h>
#define statusBarHeight 20
#define textFieldMargin 10 // 两个输入框之间的间距
#define timeCount 60 // 倒计时长
static int count = 0;
@interface QJRegisterViewController()<UIAlertViewDelegate,WXApiDelegate, UITextFieldDelegate>
{
NSTimer* _showRepeatButtonTimer; // 显示重新发送按钮倒计时
NSTimer* _updateTime; // 更新倒计时label
UIAlertView *_notGetSMSAlert; // 没有搜到验证码重新发送弹窗
UIAlertView *_backButtonClickAlert; // 点击返回按钮弹窗
}
@property(nonatomic, weak) UITextField *telField; // 手机号码
@property (nonatomic, weak) UITextField *verifyField; // 验证码
@property (nonatomic, weak) UIButton *loginBtn; // 登录按钮
@property(nonatomic,strong) UITextField* areaCodeField; // 区号
@property (nonatomic, weak) UIButton *icon; // 头像
@property (nonatomic, weak) NSString *str; // alert提示信息
@property (nonatomic, weak) UIButton *verifyRightView; // 获取验证码按钮
@end
@implementation QJRegisterViewController
- ( void)viewDidLoad
{
// 配置
_areaCodeField.text=[NSString stringWithFormat: @" +%@ ",@ 86];
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithName: @" background "]];
// 布局子控件
[self setupSubViews];
}
/* *
* 布局子控件
*/
- ( void)setupSubViews
{
#warning 这里需要根据图片的大小大小来动态确定各控件的frame。这里还没有设置icon的图片
// 创建LOGO
CGFloat logoX = self.view.width * 0.5 - self.icon.currentBackgroundImage.size.width * 0.5;
CGFloat logoY = 100;
CGFloat logoW = self.icon.currentBackgroundImage.size.width;
CGFloat logoH = self.icon.currentBackgroundImage.size.height;
UIButton *icon = [[UIButton alloc] initWithFrame:CGRectMake(logoX, logoY, logoW, logoH)];
icon.backgroundColor = [UIColor blueColor];
[self.view addSubview:icon];
self.icon = icon;
// 创建手机号码输入框
CGFloat telFieldX = self.view.width * 0.5 - 115;
CGFloat telFieldY = self.icon.height + self.icon.currentBackgroundImage.size.height + 84;
CGFloat telFieldW = 230;
CGFloat telFieldH = 40;
UITextField *telField = [[UITextField alloc] initWithFrame:CGRectMake(telFieldX, telFieldY, telFieldW, telFieldH)];
telField.placeholder = @" 请输入手机号码 ";
[self creatTextFieldLeftViewWithTextfield:telField andLeftViewImageName: @" tel_leftIcon "];
self.telField = telField;
// 创建验证码输入框
CGFloat verifyFieldX = telFieldX;
CGFloat verifyFieldY = telFieldY + telFieldH + textFieldMargin;
CGFloat verifyFieldW = telFieldW;
CGFloat verifyFieldH = telFieldH;
UITextField *verifyField = [[UITextField alloc] initWithFrame:CGRectMake(verifyFieldX, verifyFieldY, verifyFieldW, verifyFieldH)];
verifyField.placeholder = @" 请输入手机验证码 ";
[self creatTextFieldLeftViewWithTextfield:verifyField andLeftViewImageName: @" verify_leftIcon "]; // 添加左边图标
self.verifyField = verifyField;
// 添加获取验证码按钮
UIButton *verifyRightView = [[UIButton alloc] init];
[verifyRightView setBackgroundImage:[UIImage imageWithName: @" verify_rightNormal "] forState:UIControlStateNormal];
[verifyRightView setBackgroundImage:[UIImage imageWithName: @" verify_right_highlighted "] forState:UIControlStateHighlighted];
[verifyRightView setTitle: @" 获取验证码 " forState:UIControlStateNormal];
verifyRightView.font = [UIFont boldSystemFontOfSize: 10];
verifyRightView.width = verifyRightView.currentBackgroundImage.size.width;
verifyRightView.height = verifyRightView.currentBackgroundImage.size.height;
verifyRightView.frame = CGRectMake( 0, 0, verifyRightView.width, verifyRightView.height);
verifyRightView.contentMode = UIViewContentModeCenter;
verifyField.rightViewMode = UITextFieldViewModeAlways;
verifyField.rightView = verifyRightView;
self.verifyRightView = verifyRightView;
[verifyRightView addTarget:self action:@selector(verifyClick) forControlEvents:UIControlEventTouchUpInside]; // 点击获取验证码
// 创建登录按钮
CGFloat loginBtnX = telFieldX;
CGFloat loginBtnY = verifyFieldY + verifyFieldH + 35;
CGFloat loginBtnW = telFieldW;
CGFloat loginBtnH = 42;
UIButton *loginBtn = [[UIButton alloc] initWithFrame:CGRectMake(loginBtnX, loginBtnY, loginBtnW, loginBtnH)];
[loginBtn setBackgroundImage:[UIImage imageWithName: @" login "] forState:UIControlStateNormal];
[loginBtn setBackgroundImage:[UIImage imageWithName: @" login_highlighted "] forState:UIControlStateHighlighted];
[self.view addSubview:loginBtn];
self.loginBtn = loginBtn;
[loginBtn addTarget:self action:@selector(login) forControlEvents:UIControlEventTouchUpInside]; // 点击获取验证码
// 创建一个导航栏
UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake( 0, 0+statusBarHeight, self.view.frame.size.width, 44)];
UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:nil];
UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithTitle: @" 返回 "
style:UIBarButtonItemStyleBordered
target:self
action:@selector(clickLeftButton)];
[navigationItem setTitle:NSLocalizedString( @" register ", nil)];
[navigationBar pushNavigationItem:navigationItem animated:NO];
[navigationItem setLeftBarButtonItem:leftButton];
[self.view addSubview:navigationBar];
}
/* *
* 创建TextFieldLeftView
*/
- ( void)creatTextFieldLeftViewWithTextfield:(UITextField *)textField andLeftViewImageName:(NSString *)name
{
textField.borderStyle = UITextBorderStyleRoundedRect;
textField.keyboardType = UIKeyboardTypeNumberPad;
[textField becomeFirstResponder];
// 输入框左边图标
UIImageView *leftView = [[UIImageView alloc] init];
leftView.image = [UIImage imageWithName:name];
leftView.width = leftView.image.size.width + 20;
leftView.height = leftView.image.size.height;
leftView.frame = CGRectMake( 14, 12, leftView.width, leftView.height);
leftView.contentMode = UIViewContentModeCenter;
textField.leftView = leftView;
textField.leftViewMode = UITextFieldViewModeAlways;
textField.clearButtonMode = UITextFieldViewModeAlways; // 清除按钮常显示
textField.backgroundColor = [UIColor colorWithWhite: 1.0 alpha: 0.3];
textField.font = [UIFont systemFontOfSize: 12];
[self.view addSubview:textField];
}
#pragma mark - buttonClicks
/* *
* 点击获取验证码
*/
- ( void)verifyClick
{
// 如果手机号长度不为11位,提示号码不正确
if (self.telField.text.length!= 11)
{
// 手机号码不正确
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:NSLocalizedString( @" notice ", nil)
message:NSLocalizedString( @" errorphonenumber ", nil)
delegate:self
cancelButtonTitle:NSLocalizedString( @" sure ", nil)
otherButtonTitles:nil, nil];
[alert show];
return;
}
// 弹窗显示提示信息
NSString* str=[NSString stringWithFormat: @" %@:%@ ",NSLocalizedString( @" willsendthecodeto ", nil),self.telField.text];
QJLog( @" %@ ",self.telField.text);
_str=[NSString stringWithFormat: @" %@ ",self.telField.text];
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:NSLocalizedString( @" surephonenumber ", nil)
message:str delegate:self
cancelButtonTitle:NSLocalizedString( @" cancel ", nil)
otherButtonTitles:NSLocalizedString( @" sure ", nil), nil];
[alert show];
}
/* *
* 弹出控制器
*/
- ( void)clickLeftButton
{
[self dismissViewControllerAnimated:YES completion:nil];
}
/* *
* 退出键盘
*/
- ( void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *) event
{
[self.view endEditing:YES];
}
#pragma mark - UIAlertDelegate
- ( void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if ( 1==buttonIndex)
{
[SMS_SDK getVerificationCodeBySMSWithPhone:self.telField.text zone: @" 86 " result:^(SMS_SDKError *error) {
if (!error) {
#warning 这里填写验证码发送后的执行方法
[self getVerify];
} else{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @" 错误 " message:[NSString stringWithFormat: @" 状态码:%zi ,错误描述:%@ ",error.errorCode,error.errorDescription] delegate:self cancelButtonTitle: @" 确定 " otherButtonTitles:nil, nil];
[alert show];
}
}];
}
if (alertView==_notGetSMSAlert)
{
if ( 1==buttonIndex)
{
QJLog( @" 重发验证码 ");
[SMS_SDK getVerifyCodeByPhoneNumber:self.telField.text AndZone: @" 86 " result:^( enum SMS_GetVerifyCodeResponseState state)
{
if ( 1==state)
{
QJLog( @" block 获取验证码成功 ");
}
else if( 0==state)
{
QJLog( @" block 获取验证码失败 ");
NSString* str=[NSString stringWithFormat:NSLocalizedString( @" codesenderrormsg ", nil)];
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:NSLocalizedString( @" codesenderrtitle ", nil) message:str delegate:self cancelButtonTitle:NSLocalizedString( @" sure ", nil) otherButtonTitles:nil, nil];
[alert show];
}
else if (SMS_ResponseStateMaxVerifyCode==state)
{
NSString* str=[NSString stringWithFormat:NSLocalizedString( @" maxcodemsg ", nil)];
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:NSLocalizedString( @" maxcode ", nil) message:str delegate:self cancelButtonTitle:NSLocalizedString( @" sure ", nil) otherButtonTitles:nil, nil];
[alert show];
}
else if(SMS_ResponseStateGetVerifyCodeTooOften==state)
{
NSString* str=[NSString stringWithFormat:NSLocalizedString( @" codetoooftenmsg ", nil)];
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:NSLocalizedString( @" notice ", nil) message:str delegate:self cancelButtonTitle:NSLocalizedString( @" sure ", nil) otherButtonTitles:nil, nil];
[alert show];
}
}];
}
}
if (alertView==_backButtonClickAlert) {
if ( 0==buttonIndex)
{
[self dismissViewControllerAnimated:YES completion:^{
[_updateTime invalidate];
[_showRepeatButtonTimer invalidate];
}];
}
}
}
/* *
* 等待验证码
*/
- ( void)getVerify
{
[_showRepeatButtonTimer invalidate]; //
[_updateTime invalidate];
count = 0;
// 显示重新发送按钮
NSTimer *showRepeatButtonTimer=[NSTimer scheduledTimerWithTimeInterval:timeCount
target:self
selector:@selector(showRepeatButton)
userInfo:nil
repeats:YES];
// 倒计时label
NSTimer *updateTime = [NSTimer scheduledTimerWithTimeInterval: 1
target:self
selector:@selector(updateTime)
userInfo:nil
repeats:YES];
_showRepeatButtonTimer = showRepeatButtonTimer;
_updateTime = updateTime;
}
/* *
* 显示重新发送按钮
*/
-( void)showRepeatButton{
[self.verifyRightView setTitle: @" 重新发送 " forState:UIControlStateNormal];
[_showRepeatButtonTimer invalidate];
return;
}
- ( void)leftButtonClick
{
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:NSLocalizedString( @" notice ", nil)
message:NSLocalizedString( @" codedelaymsg ", nil)
delegate:self
cancelButtonTitle:NSLocalizedString( @" back ", nil)
otherButtonTitles:NSLocalizedString( @" wait ", nil), nil];
_backButtonClickAlert=alert;
[alert show];
}
/* *
* 登录
*/
- ( void)login
{
// 验证号码
// 验证成功后 获取通讯录 上传通讯录
[self.view endEditing:YES];
if(self.verifyField.text.length!= 4)
{
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:NSLocalizedString( @" notice ", nil)
message:NSLocalizedString( @" verifycodeformaterror ", nil)
delegate:self
cancelButtonTitle: @" 确定 "
otherButtonTitles:nil, nil];
[alert show];
}
else
{
[SMS_SDK commitVerifyCode:self.verifyField.text result:^( enum SMS_ResponseState state) {
if ( 1==state)
{
NSString* str=[NSString stringWithFormat:NSLocalizedString( @" verifycoderightmsg ", nil)];
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:NSLocalizedString( @" verifycoderighttitle ", nil)
message:str
delegate:self
cancelButtonTitle:NSLocalizedString( @" sure ", nil)
otherButtonTitles:nil, nil];
[alert show];
}
else if( 0==state)
{
NSString* str=[NSString stringWithFormat:NSLocalizedString( @" verifycodeerrormsg ", nil)];
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:NSLocalizedString( @" verifycodeerrortitle ", nil)
message:str
delegate:self
cancelButtonTitle:NSLocalizedString( @" sure ", nil)
otherButtonTitles:nil, nil];
[alert show];
}
}];
}
}
/* *
* 没有收到验证码,重新发送验证码
*/
- ( void)CannotGetSMS
{
NSString* str=[NSString stringWithFormat: @" %@:%@ ",NSLocalizedString( @" cannotgetsmsmsg ", nil) ,self.telField.text];
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:NSLocalizedString( @" surephonenumber ", nil) message:str delegate:self cancelButtonTitle:NSLocalizedString( @" cancel ", nil) otherButtonTitles:NSLocalizedString( @" sure ", nil), nil];
_notGetSMSAlert=alert;
[alert show];
}
/* *
* 更新时间label
*/
-( void)updateTime
{
count++;
if (count >= timeCount)
{
[_updateTime invalidate];
return;
}
NSString *updateTimeStr =[NSString stringWithFormat: @" %@%i%@ ",NSLocalizedString( @" timelablemsg ", nil),timeCount-count,NSLocalizedString( @" second ", nil)];
[self.verifyRightView setTitle:updateTimeStr forState:UIControlStateNormal];
}
@end
注意:
1.由于该代码中的所有控件布局都参照LOGO的位置和大小,所以,在使用该代码时,LOGO的大小将影响其他子控件的布局
2.使用时将代码里的图片名称换掉自己的
本文为原创,转载请注明本文连接