繁体   English   中英

检测UIButton事件何时完成

[英]Detecting when UIButton event is done

我正在尝试在UIButton上实现拖放功能,它工作正常,但我无法找到一种方法来确定用户何时放开按钮并完成拖动。 下面的代码适用于拖动,但我需要在用户完成拖动并释放按钮时收到通知。

- (void)viewDidLoad
{
    [gesturesBrowserButton addTarget:self action:@selector(wasDragged:withEvent:) 
     forControlEvents:UIControlEventTouchDragInside];

    [gesturesBrowserButton addTarget:self action:@selector(finishedDragging:withEvent:) 
                    forControlEvents:UIControlEventTouchDragExit];
}

- (void)wasDragged:(UIButton *)button withEvent:(UIEvent *)event
{
    // get the touch
    UITouch *touch = [[event touchesForView:button] anyObject];

    // get delta
    CGPoint previousLocation = [touch previousLocationInView:button];
    CGPoint location = [touch locationInView:button];
    CGFloat delta_x = location.x - previousLocation.x;
    CGFloat delta_y = location.y - previousLocation.y;

    // move button
    button.center = CGPointMake(button.center.x + delta_x,
                                button.center.y + delta_y);

    NSLog(@"was dragged");
}

- (void)finishedDragging:(UIButton *)button withEvent:(UIEvent *)event
{
    //doesn't get called
    NSLog(@"finished dragging");
}

我认为更换

UIControlEventTouchDragExit

UIControlEventTouchDragExit|UIControlEventTouchUpInside

这将是解决问题的良好开端。

我认为你想要的事件是UIControlEventTouchUpInside 这就是“在这种控制中,触摸消失了”。 但是,你可能不会在这一点上得到那个。 你肯定不会得到UIControlEventTouchDragExit ,因为这意味着拖动已离开控件。

如果UIControlEventTouchUpInside不适合你,我喜欢捕获UIControlEventAllEvents并在它们进入时记录它们。然后你可以看到确切的触发时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM