1

我正在使用 [performSelector:@selector(reloadData) withObject:nil afterDelay:0.01]UIButton 的内部 IBAction,reloadData 方法以特定方式在主视图上绘制了一些子视图,问题是当我快速反复点击按钮时,选择器“ReloadData”多次执行,事件虽然我正在取消之前对该选择器的所有请求,这会导致主视图中的子视图重复

-(IBAction) myButtonIsTapped
{
     [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(reloadData) object:nil];

    [self performSelector:@selector(reloadData) withObject:nil afterDelay:0.01];

}

并重新加载数据方法,如下所示:

-(void) reloadData
{
     @synchronized(self){
        // clear all subviews from the main view
        // draw new subviews
     }
}
4

2 回答 2

3

那这个呢:

-(IBAction) myButtonIsTapped
{
    [self.myButton setUserInteractionEnabled:NO];

    [self performSelector:@selector(reloadData) withObject:nil afterDelay:0.01];

}

-(void) reloadData
{
    // Long task...
    // Enable the button again:
    [self.myButton setUserInteractionEnabled:YES];

}

有时,控制用户正在做什么(UI)比从逻辑上处理他所做的事情更容易。

于 2013-02-14T10:21:20.263 回答
0

做一件事,创建一个BOOL variable并设置为viewdidload是,如果是,则检查函数,然后方法调用,并在 buttonmake 方法中将其设为否。

于 2013-02-14T10:20:55.920 回答