在我的应用程序中,有时会出现此错误,因为UI卡住并且用户点击了不止一次按钮:
我已经试过了:
How to prevent multiple event on same UIButton in iOS?
它的工作原理就像一种魅力,但是如果我的标签栏包含超过5个元素,那么如果我选中显示元素大于5的按钮,则更多按钮会从左到右进行动画处理。
还有其他方法可以以一种不使用动画的简单方式来防止双击选项卡吗?
这是我正在使用的代码:
- (IBAction)btnAction:(id)sender {
UIButton *bCustom = (UIButton *)sender;
bCustom.userInteractionEnabled = NO;
[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationOptionAllowAnimatedContent animations:^{
[self selectTabControllerIndex:bCustom.tag];
} completion:^(BOOL finished){
bCustom.userInteractionEnabled = YES;
}];
}
最佳答案
首先提示,如果只有按钮调用该选择器,则可以将id
更改为UIButton*
并删除多余的变量bCustom
。
现在,要解决您的问题,您只需要确保在完成所有需要做的事情之后就可以将userInteractionEnabled
转换回YES
。使用动画块是一种简单的方法,因为它内置了完成处理程序。
您可以通过让selectTabControllerIndex
方法为您完成工作来简单地做到这一点。
像这样的东西:
- (IBAction)btnAction:(UIButton*)sender {
sender.userInteractionEnabled = NO;
[self selectTabControllerForButton:sender];
}
- (void)selectTabControllerForButton:(UIButton*)sender {
// Whatever selectTabControllerIndex does now goes here, use sender.tag as you used index
sender.userInteractionEnabled = YES;
}
如果您之后可能需要执行其他代码,则可以将完成处理程序添加到
selectTabControllerIndex
方法中,然后调用完成处理程序。在其中添加sender.userInteractionEnabled = YES;
行。但是,如果代码始终相同,则第一种方法将变得越来越容易。关于ios - 防止在同一UIButton上多次点击,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37341838/