zoukankan      html  css  js  c++  java
  • iOS开发--验证码

    第一步,拖两个空间textfiled和button到storyboard上的viewcontroller上。

    屏幕快照 2015-08-05 下午11.53.36

    第二步,拖线,链接到.h文件中代码如下:

    1
    @property (weak, nonatomic) IBOutlet UIButton *l_timeButton;

    第三步,在,m文件中为l_timeButton设置监听器,监听点击事件。

    1
    2
    3
    4
    - (void)viewDidLoad {
        [super viewDidLoad];
        [_l_timeButton addTarget:self action:@selector(startTime) forControlEvents:UIControlEventTouchUpInside];
    }

    第四步,在方法“startTime”中实现倒计时功能

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    -(void)startTime{
        __block int timeout=30; //倒计时时间
        dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
        dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
        dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
        dispatch_source_set_event_handler(_timer, ^{
            if(timeout<=0){ //倒计时结束,关闭
                dispatch_source_cancel(_timer);
                dispatch_async(dispatch_get_main_queue(), ^{
                    //设置界面的按钮显示 根据自己需求设置
                    [_l_timeButton setTitle:@"发送验证码" forState:UIControlStateNormal];
                    _l_timeButton.userInteractionEnabled = YES;
                });
            }else{
                int seconds = timeout % 60;
                NSString *strTime = [NSString stringWithFormat:@"%.2d", seconds];
                dispatch_async(dispatch_get_main_queue(), ^{
                    //设置界面的按钮显示 根据自己需求设置
                    //NSLog(@"____%@",strTime);
                    [UIView beginAnimations:nil context:nil];
                    [UIView setAnimationDuration:1];
                    [_l_timeButton setTitle:[NSString stringWithFormat:@"%@秒后重新发送",strTime] forState:UIControlStateNormal];
                    [UIView commitAnimations];
                    _l_timeButton.userInteractionEnabled = NO;
                });
                timeout--;
            }
        });
        dispatch_resume(_timer);
    }

    一个验证码倒计时的功能就写好了

  • 相关阅读:
    ZOJ 2158 Truck History
    Knight Moves (zoj 1091 poj2243)BFS
    poj 1270 Following Orders
    poj 2935 Basic Wall Maze (BFS)
    Holedox Moving (zoj 1361 poj 1324)bfs
    ZOJ 1083 Frame Stacking
    zoj 2193 Window Pains
    hdu1412{A} + {B}
    hdu2031进制转换
    openjudge最长单词
  • 原文地址:https://www.cnblogs.com/wanghuaijun/p/5260786.html
Copyright © 2011-2022 走看看