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; 
} 

但是这是造成问题,当用户在按钮快速敲击。因为我的进程正在线程上运行,所以加载和停止需要时间。同时使用已经有双击按钮。

+0

通常,用户只对按钮执行一次单击操作,如果在某些情况下支持双击,则这些操作的行为与单击不同。你想要的是在两个动作上做同样的动作。我认为你不应该把它变得复杂。 – Amit

+0

检查我已经添加了我的问题作为编辑简要; – Mrunal

+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; 
+0

谢谢,我会试试这个 – Mrunal

+0

嗨,我已经尝试过,在我的自定义单元类中向uibutton添加手势识别器。但是这些方法中的任何一个都没有被调用。 – Mrunal

+0

如果你使用UIGestureRecognizers,你并不需要一个UIButton--简单的UIView就足够了。 – johnyu

你不需要处理双击,你没有正确处理按钮。

试试你的按钮动作,并为按钮的默认/选定状态设置适当的图像。

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

    [sender setSelected:![sender isSelected]]; 

    if ([sender isSelected]) { 

     //Play 

    } else { 

     //Pause 

    } 

}