UIButton将手指拖入边界

时间:2015-10-05 09:33:09

标签: ios objective-c uibutton touch-event

我试图让某个特定事件发挥作用。 用户应该触摸一个按钮(A),此按钮会弹出一些UIView,其中还有另一个按钮(B)。

如果用户touchUpInside按钮A,弹出窗口应该消失,而按钮(B)将无法点击。 但是,如果用户单击按钮(A),然后将手指拖动到按钮(B),则会选择此按钮(B),但只有在用户TouchUpInside此​​按钮(B)时才会触发

我尝试过最明显的TouchDragEnter和TouchDragInside,但它没有达到我的预期,你必须先触摸它才能使用它。由于TouchDownInside事件已在按钮(A)上完成,因此无法在按钮(B)上完成

我是否遗漏了某些内容,或者我是否应该继续为此特定行为创建我自己的子类?

要添加一些难度,按钮(A)和按钮(B)不在同一个UIView上。

2 个答案:

答案 0 :(得分:0)

如果我要这样做,我会完全忽略touchUpInside等,只关注拖动事件。在touchesMoved方法中,不断检查触摸的位置,以及它们是否与您关注的视图的矩形相交。

这样的事情:(为不完整的例子道歉)

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    CGPoint currentPoint = [touch locationInView:self];
    if ( CGRectContainsPoint(imageView.bounds, locationInView) ) {
    // Point lies inside the bounds...

答案 1 :(得分:0)

我刚刚创建了一个名为PopMenu的库,它实现了你提到的功能。这个想法是当你触摸菜单按钮时弹出按钮并跟踪用户的手指直到用户触摸屏幕。它返回用户结束触摸的按钮。

enter image description here