您的位置:首页 > 移动开发 > IOS开发

[IOS 开发] 防止button被点击多次

2015-08-13 10:10 465 查看
 
- (void)todoSomething:(id)sender
{
//在这里做按钮的想做的事情。
}

- (void)starButtonClicked:(id)sender
{
//先将未到时间执行前的任务取消。

 [[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(todoSomething:) object:sender];

[self performSelector:@selector(todoSomething:) withObject:sender afterDelay:0.2f];
}
 

 说明

iOS常见的延时执行有2种方式

(1)调用NSObject的方法
[self performSelector:@selector(run) withObject:nil afterDelay:2.0];
// 2秒后再调用self的run方法
 

(2)使用GCD函数
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    // 2秒后异步执行这里的代码...
});
 

第一种方法,该方法在那个线程调用,那么run就在哪个线程执行(当前线程),通常是主线程。
[self performSelector:@selector(run) withObject:nil afterDelay:3.0];
如果在子线程中就会有问题. runloop 没有timer
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: