我有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];
}
所以基本的想法是当我点击它时它的功能改变为取消和副verca
问题是,当我第一次点击它时,它会调用searchAction
,然后无缘无故地调用cancelSearch
。
有谁知道为什么会这样?
答案 0 :(得分:5)
解决方法是将BOOL添加为实例变量
BOOL canCancel;
然后执行以下操作
- (void)buttonClicked:(UIButton *)sender {
if (!canCancel) {
// action that should be done
canCancel = YES;
} else if (canCancel) {
// cancel action
canCancel = NO;
}
}