关于按钮多次点击问题
关于按钮多次点击问题
- 在处理点击事件或者其他类似事件时,要避免多次点击并没有很好的方法
下面这一种我认为比较好的方式
- 通过performSelector 延迟某方法的执行,然后再通过cancelPreviousPerformRequestsWithTarget:self 来取消之前要执行的方法。
- 这两个方法执行原理就是,performSelector 会将要执行的任务延迟一段时间执行,在延迟的 这段时间内如果执行cancelPreviousPerformRequestsWithTarget:self方法就会取消这个任务,然后开始新的任务。
// 代理事件
- (void)pushOperationPanel:(long long)userId
{
NSNumber *currentUserId = [NSNumber numberWithLongLong:userId];
[[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(delaySendRequest:) object:currentUserId]; // 取消之前添加的任务
[self performSelector:@selector(delaySendRequest:) withObject:currentUserId afterDelay:0.4]; // 添加新任务
}
- (void)delaySendRequest:(NSNumber *)num
{
long long userId = num.longLongValue;
NSLog(@"hahaha");
}
如果真是按钮的话,倒是好操作,可以添加定时器
// 代理事件
- (void)pushOperationPanel:(UIButton *)btn
{
NSNumber *currentUserId = [NSNumber numberWithLongLong:userId];
btn.enabled = NO;
// send request
[NSTimer scheduledTimerWithTimeInterval:0.4f target:self selector:@selector(resetBtn:) userInfo:nil repeats:NO];
}
- (void)resetBtn
{
_pushButton.enabled = YES;
NSLog(@"hahaha");
}
还可以通过网络返回数据来决定按钮的状态,如果返回失败就disable,成功就enable,超时就enable。
- 这个应该是比较好的,但是这只是适用于网络请求事件
本文来自博客园,作者:struggle_time,转载请注明原文链接:https://www.cnblogs.com/songliquan/p/4970496.html
分类:
Foundation
, Objective C
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?