防止按钮同时被按下

8

这是一个简单的问题,但解决起来有些棘手。

我有两个执行相同功能的按钮。

我已经为这两个按钮分别设置了不同的触摸事件。虽然这有所帮助,但仍然可能同时按下它们。在网络连接较慢时,这将更容易发生。

[vote1Btn addTarget:self action:@selector(voteUp:) forControlEvents:UIControlEventTouchUpInside];
[vote2Btn addTarget:self action:@selector(voteUp:) forControlEvents:UIControlEventTouchDown];

3
这个按钮的功能是什么,为什么它与“慢连接”相关联? - J2theC
1
听起来你可能正在主线程上进行网络访问 - 这是不好的。 - rmaddy
2
为什么你在第二个按钮上使用touch down?如果你在两个按钮上都使用touch up inside,那么应该没问题。 - Rob
请求完成后,我才会转到下一个视图。是否有更好的方法? - mikeholp
听起来你的按钮会触发网络请求,在执行请求时,你不希望按钮再次被点击。为什么不在请求完成之前禁用这些按钮,以避免重复请求呢? - albertamg
2个回答

25
将两个按钮的exclusiveTouch属性设置为YES。

如果这还不够,当每个按钮开始操作时,请让它们调用共享应用程序对象的beginIgnoringInteractionEvents方法,并在其操作结束时调用endIgnoringInteractionEvents方法。

如果我可以给这个答案更多的赞,我一定会的——真是省了不少时间! - 0xWood
在iOS10中运行得非常好! - ronatory

0
for(UIView* v in self.view.subviews)
{
    if([v isKindOfClass:[UIButton class]])
    {
        UIButton* btn = (UIButton*)v;
        [yourButton setExclusiveTouch:YES];
    }
}

这将起作用!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接