UIButton上需要单击和双击事件?
问题描述:
有三个UIButton的活动可供选择:UIButton上需要单击和双击事件?
UITouchUPInside
UITouchDown
UITouchDownRepeat
我的问题是:
我有一个按钮(播放,暂停)。第一次显示播放按钮,如果用户点击它,它开始我的过程。和按钮图像更改为暂停和如果暂停按钮的用户点击,它会暂停处理和图像的变化发挥,标记为0
现在我的问题是,如果用户点击标记更改为1
多次,它没有正确执行。就像双击桌面鼠标一样。
我已经尝试了上述三种方法,但所有这些时候,前两种方法都被调用。所以如何避免这一点。
如果它的双击,比过程还应该只启动一次。
请建议。
编辑: 目前我们只使用TouchUpInside
事件,还有我们正在检查
if (btn.tag == 0) {
// change to pause button
// start process
btn.tag = 1;
}
else if (btn.tag == 1) {
// change to play button
// stop process
btn.tag = 0;
}
但是这是造成问题,当用户在按钮快速敲击。因为我的进程正在线程上运行,所以加载和停止需要时间。同时使用已经有双击按钮。
答
也许而不是UIButton你应该使用UIView 2 UITapGestureRecognizers
?其中一个会有numberOfTapsRequired = 2
,另一个会有numberOfTapsRequired = 1
。使用方法requiresGestureRecognizerToFail确保你不会让他们都调用他们的目标方法。然后,您可以将任何您想要的逻辑添加到水龙头处理中。
编辑:其实,虽然上面的答案是一种解决方法,它会失败,如果用户点击3次或更多次。而且,由于您无法为从1到无限的每个抽头数量制作手势识别器,因此在某些情况下会失败。试试这个:
btn.enabled = NO;
if (btn.tag == 0) {
// change to pause button
// start process
btn.tag = 1;
}
else if (btn.tag == 1) {
// change to play button
// stop process
btn.tag = 0;
}
btn.enabled = YES;
答
你不需要处理双击,你没有正确处理按钮。
试试你的按钮动作,并为按钮的默认/选定状态设置适当的图像。
- (void)handleButtonAction:(UIButton *)sender {
[sender setSelected:![sender isSelected]];
if ([sender isSelected]) {
//Play
} else {
//Pause
}
}
通常,用户只对按钮执行一次单击操作,如果在某些情况下支持双击,则这些操作的行为与单击不同。你想要的是在两个动作上做同样的动作。我认为你不应该把它变得复杂。 – Amit
检查我已经添加了我的问题作为编辑简要; – Mrunal
我不认为苹果喜欢它,如果你不遵循接口指南。需要双击按钮会使用户感到困惑。 –