Iphone 使用performSelector:withObject:afterDelay:inside UIButton操作

Iphone 使用performSelector:withObject:afterDelay:inside UIButton操作,iphone,ios,objective-c,ipad,Iphone,Ios,Objective C,Ipad,我在UIButton的iAction中使用[performSelector:@selector(reloadData)with Object:nil afterDelay:0.01],reloadData方法以特定的方式在主视图上绘制一些子视图,问题是当我快速反复点击按钮时,选择器“reloadData”执行多次,事件,尽管我正在取消之前对该选择器的所有请求,但这会导致主视图中的子视图重复 -(IBAction) myButtonIsTapped { [NSObject cancelP

我在UIButton的iAction中使用
[performSelector:@selector(reloadData)with Object:nil afterDelay:0.01]
,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
     }
}

做一件事创建一个
BOOL变量
并在
viewdiload
yes中设置,如果是,则检入函数,然后在buttonmake方法中调用方法并将其设为no。

这是怎么回事:

-(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)比逻辑处理用户所做的事情更容易。

您如何知道视图正在被复制?如果我在禁用用户交互时点击按钮,则在启用用户交互后执行的按钮操作,为什么会发生这种情况?关键是,在您想做的事情完成后,您应该再次启用该按钮。