iOS屏蔽高频点击技巧
2015-11-05 10:21
459 查看
例如高频率点击一个按钮或者TableViewCell,会造成功能多次重复执行,在异步网络请求时候或者多线程时候,造成的问题尤其明显。
解决方法:
声明一个属性self.actionWorking ,标识是否有任务在执行,如果有就返回,如果没有就self.actionWorking= YES;然后通过
- (void)performSelector:(SEL)aSelector withObject:(nullable id)anArgument afterDelay:(NSTimeInterval)delay;
来执行目标操作,执行之后,self.actionWorking = NO;
例如:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (self.actionWorking)
{
return;
}
self.actionWorking = YES;
[self performSelector:@selector(someAction:) withObject:nil afterDelay:0.5];
return;
}
-(void)someAction:(NSObject*)object{
// do some working
self.actionWorking = NO;
}
解决方法:
声明一个属性self.actionWorking ,标识是否有任务在执行,如果有就返回,如果没有就self.actionWorking= YES;然后通过
- (void)performSelector:(SEL)aSelector withObject:(nullable id)anArgument afterDelay:(NSTimeInterval)delay;
来执行目标操作,执行之后,self.actionWorking = NO;
例如:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (self.actionWorking)
{
return;
}
self.actionWorking = YES;
[self performSelector:@selector(someAction:) withObject:nil afterDelay:0.5];
return;
}
-(void)someAction:(NSObject*)object{
// do some working
self.actionWorking = NO;
}
相关文章推荐
- iOS夯实:内存管理
- [XTPaster] iOS 贴纸功能实现
- iOS开发经验总结—内存管理
- iOS内存管理机制解析
- 关于IOS内存机制的较深入分析
- iOS 的内存管理和虚拟内存机制具体是怎么运作的?
- ios About the Virtual Memory System
- Mac OS X / IOS 内存管理机制简要说明
- 类似开门的动画-iOS
- iOS 应用国际化图解
- IOS整体框架介绍
- iOS---字符串替换
- iOS第三方框架---AFNetWorking详解
- iOS开发摇动手势实现详解
- 线程是什么?进程是什么?二者有什么区别和联系?
- iOS 获取图片视频图库
- iOS实例化plist文件到数组中
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- iOS ---xib自定义cell
- iOS微博时间与微博来源文本的处理