如何在UIButton上按下双按钮取消操作?

Dan*_*y Y -1 iphone uibutton ios

UIButton点击后我开始搜索数据.但在搜索时,如果用户再次点击该按钮,则会取消搜索.

相关守则:

    - (void)searchAction:(UIButton *)sender {

    [sender removeTarget:self action:@selector(searchAction:) forControlEvents:UIControlEventTouchUpInside];
    [sender addTarget:self action:@selector(cancelSearch:) forControlEvents:UIControlEventTouchUpInside];  
    [animatedImages startAnimating];
    //action that should be done

}

- (void)cancelSearch:(UIButton *)sender {
    [sender removeTarget:self action:@selector(cancelSearch:) forControlEvents:UIControlEventTouchUpInside];
    [sender addTarget:self action:@selector(searchNearbyAction:) forControlEvents:UIControlEventTouchDown];
    [animatedImages stopAnimating];

}
Run Code Online (Sandbox Code Playgroud)

所以基本的想法是,当我点击它的功能改变取消和副verca

问题是,当我第一次点击它时,它会调用searchAction然后cancelSearch无缘无故地调用.

有谁知道为什么会发生这种情况?

thv*_*kel 5

解决方法是将BOOL添加为实例变量

BOOL canCancel;
Run Code Online (Sandbox Code Playgroud)

然后执行以下操作

- (void)buttonClicked:(UIButton *)sender {
      if (!canCancel) {
           // action that should be done
           canCancel = YES;
      } else if (canCancel) {
           // cancel action
           canCancel = NO;
      }
}
Run Code Online (Sandbox Code Playgroud)