验证码计时 -- UIButton setTitle 闪烁问题解决方案
首先,有各种版本
方法一:
我运用的一种极其简单的版本: 将UIButton的Type 设成 Custom 就不会有闪烁的问题重现
@property (strong, nonatomic) IBOutlet UIButton *getCodeBtn;
@property (nonatomic, strong) NSTimer *timerCode; //验证码定时器
__block int leftTime;
- (void)dealloc {
if ([_timerCode isValid]) {
[_timerCode invalidate];
_timerCode = nil;
}
}
#pragma mark - 验证码
//重新发送验证码
- (IBAction)resendCodeBtnPressed:(UIButton *)sender {
//判断哪一个网络请求发送验证码
//...
sender.enabled = NO;
leftTime = 60;
[self startOneTimer];
//发送验证码请求
[self.viewModel requestWithSendCode:[kUSERDEFAULT objectForKey:_isResetPassword? kForgetMobile:kLoginMobile] block:^(BOOL flag) {
}];
}
/**
* 发送验证码之后等待若干时间
*/
- (void)startOneTimer {
_getCodeBtn.enabled = NO;
leftTime = 60;
_timerCode = [NSTimer scheduledTimerWithTimeInterval:1 block:^{
if (leftTime == 0) {
_getCodeBtn.enabled = YES;
[_getCodeBtn setTitle:@"重新发送" forState:UIControlStateNormal];
[_getCodeBtn setTitleColor:fcc639 forState:UIControlStateNormal];
//计时完成,销毁定时器
[_timerCode invalidate];
_timerCode = nil;
leftTime = 60;
return ;
}
leftTime--;
[_getCodeBtn setTitle:[NSString stringWithFormat:@"%i秒后重发", leftTime] forState:UIControlStateNormal];
[_getCodeBtn setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal];
} repeats:YES];
}
方法二: 就是在UIButton上罩一个同样大小的UILabel,然后每次刷新UILabel的文字,不刷新按钮,效果不错,不再闪烁了
链接 :http://blog.csdn.net/kyfxbl/article/details/17619221
方法三:https://www.cnblogs.com/manji/p/4813520.html
补充: 我的方法中运用了 防止timer没有被销毁掉的timerBlocks 请自行查找
// NSTimer+Blocks.h
//
// Created by Jiva DeVoe on 1/14/11.
// Copyright 2011 Random Ideas, LLC. All rights reserved.
验证码计时 -- UIButton setTitle 闪烁问题解决方案相关推荐
- 避免DateTimePicker闪烁的解决方案
1. 在WinForm上放置一个TabControl,并设置其Dock属性为Fill. 2. 在其中的一个Tab页上放置一个DateTimePicker控件 你会发现,当你在XP系统下,Resize ...
- eclipse光标变成黑色闪烁方块解决方案
写代码途中,好好的插入光标突然变成了黑色闪烁方块. 发现是误触了键盘中的Insert按键. 解决方案:只需按一下Insert按键就可以切换成插入光标状态. 经过实验发现,Insert状态下的输入会覆盖 ...
- 【AJ-Captcha 验证码】点选文字验证码部署到Linux服务器乱码解决方案
基本信息 操作系统:Ubuntu 16 验证码框架:AJ-Captcha 验证码类型:点选文字 原因分析 将项目部署到Linux服务器上时,由于登录使用的是点选文字验证码,可能会导致以下情况: 原因: ...
- 虚拟机Ubuntu内鼠标闪烁终极解决方案
话说这个问题很早就遇到了,最近才解决,不免唏嘘. 由于造成鼠标闪烁的原因有很多,鼠标闪烁的特点也有很多,因此网上也充斥着很多解决方案,这里一并做一下梳理,以节约各位看众时间. 1.通用解决方法 这个方 ...
- php 邮件发送验证码,发送验证码邮件有什么好的解决方案?
用户Passport系统,注册,找回密码都是通过邮件发送验证码,有什么好的方案实现. 我之前用的是私人的QQ邮箱,发现偶尔系统会来一封邮件要我输入验证码,而且就怕用多了会被腾讯拉黑或者自动移到垃圾箱处 ...
- 短信验证码接收不到原因和解决方案分析
短信验证码是通过发送验证码到手机的一种有效的验证码系统.无论是大型网站尤其是购物网站,都提供有手机短信验证码功能,可以比较准确和安全地保证购物的安全性,验证用户的正确性. 创蓝253短信服务平台上总结 ...
- thinkphp5 验证码跨域/验证失败 问题解决方案
说明 后端:thinkphp5 前端:vue 我做的是子域名跨域,不是主域名跨域. 例如: 前端:aa.xxx.com 后端:bb.xxx.com 如果是主域名跨域,我试过网上的方法,没成功,sess ...
- 验证码测试的解决方案
验证码测试的解决方案 前几天一位新同事向我请教了一个问题,其问题的重点是图文验证码怎么去测试?当时由于时间关系,只是大致给他说了下测试框架,趁着闲暇时间的总结,也把解决方案分享给大家. 1 认识验证码 ...
- 计算机术语 抖动,解决方案:如果计算机屏幕闪烁和抖动,该怎么办
如果计算机屏幕闪烁和抖动,该怎么办 对于经常使用计算机的朋友来说,监视器屏幕是每个人始终都必须面对的东西.电脑屏幕的闪烁或晃动会使您的眼睛快速疲劳并严重影响视力,因此建议您遇到电脑屏幕的闪烁或电脑屏幕 ...
- iOS多语言解决方案全面指南
本文以及相关工具和代码旨在为已上线的iOS项目提供一种快速支持多语言的解决方案.由于文案显示是通过hook实现的,因此对App的性能有一定影响:除了特殊场景的文案显示需要手动支持外,其他任务均已实现自 ...
最新文章
- 近期活动盘点:2019清华大数据系统软件峰会(9.15)
- Html2excel 1.4.1 发布,Html 转 Excel 工具包
- DockPanel Suite 开源WINFORM 窗体停靠面板控件
- 京东刘海锋:过去十年架构领域最重要的三个变化
- 正式发布python版本的年份_飞书首次举办产品发布会,新版本“”正式发布
- mysqldump备份表中有大字段失败的排错过程
- nodejs连接mysql数据库,报错Client does not support authentication protocol requested by server的解决方法
- 【R爬虫-1】BBC Learning English
- 用python计算有效前沿_15个好用到哭的python库,太牛了!
- 防范ARP网关欺骗, ip mac双向绑定脚本
- Unity3D for iOS初级教程:Part 3/3
- excel常用快捷键汇总
- 转行软件测试,简历怎么包装成1年工作经验的测试工程师
- mysql误删除恢复
- 详细设计的工具——盒图(N-S图)
- ROS创建工作空间和source的解释
- hive之内表和外表
- Java中为按钮添加监听器(事件处理)四种形式总结
- 蜂窝网通信平台建模说明
- 3GPP TS 23501-g51 中英文对照 | 5.3.1 General
热门文章
- 316.去除重复字母
- Computing the cost J(θ)----吴恩达机器学习作业
- JSP指令:page指令,errorPage和isErrorPage
- JavaWeb:tomcat知识以及遇到的一些小问题
- 凸优化第五章对偶 5.7例子
- openCV,C++接口,cv::Mat矩阵数据元素读取
- cookielib和urllib2模块相结合模拟网站登录
- mapreduce 的partitioner,GroupComparator,KeyComparator,分布式缓存使用示例
- OpenCV3.4.1 vs2015 自定义过程的图片拼接
- android 7.1 灭屏,oppocolorosv7.1怎么设置息屏时钟