使可拖动的UIButton正确响应触摸事件

时间:2013-09-21 18:54:15

标签: ios objective-c cocoa-touch uibutton

我的应用中有一个可拖动的UIButton。我希望能够在UIControlEventTouchUpInside上发起一个动作。这很好。但是,如果用户拖动按钮然后从屏幕上抬起手指(目前根据UIControlEventTouchUpInside触发动作),我不希望它触发。

有没有办法设置我的按钮的触摸事件监听器,以便在TouchUpInside上触发事件,但只有在没有拖动按钮的情况下?

2 个答案:

答案 0 :(得分:2)

您必须继承UIButton,然后覆盖:

- touchesMoved 
- touchesEnded

在Moved方法中,将move标志设置为true,在Ended方法中,检查该标志。如果是,请拨打超级电话。否则,将其重定向到touchDidCanceled。

顺便说一句,如果你向我们展示如何使用手势识别器制作一个可拖动的按钮会更好吗?

答案 1 :(得分:0)

您也可以这样做,将UIButton作为UIView的子视图。

现在为uibutton设置touchUpInside并在UIView上添加panGuesture。

这就是内部触摸和拖动的方式永远不会搞砸。