如何在iOS中同时检测两个按钮长按手势



我的应用程序中有两个按钮。我想在两个按钮保持在一起至少 3 秒钟时检测手势。我知道可以检测到单个按钮长按手势,但我想在两个按钮被按下并按住几秒钟时调用单个函数。有什么办法吗?

您可以使用此代码。

@IBAction func longPress(gesture:UILongPressGestureRecognizer) {
    let view = gesture.view!
    print("state = (gesture.state.rawValue)")
    if gesture.state != UIGestureRecognizerState.Ended && gesture.state != UIGestureRecognizerState.Cancelled {
        view.tag = 1
    } else {
        view.tag = 0
    }
    if button1.tag == 1 && button2.tag == 1 {
        print("pressed both buttons for 3 seconds")
    } else {
        print("not pressed both buttons for 3 seconds")
    }
}

这个想法是保留对两个按钮的引用,然后在这些按钮上使用长手势识别器连接到单个操作。 在操作中,您将获得完成手势的按钮,然后将其标签更改为 1。如果手势结束或取消,则设置为 0。当两个按钮都被按下时,两个按钮的标签都将是 1,在这种情况下,您将知道按钮已被按下超过 3 秒。请注意,您必须在情节提要中设置最短持续时间,并保持按钮的出口。

如果需要,您可以使用不同的条件而不是标签来检查长按状态,但可以使用相同的想法。

在 ObjC

-(IBAction)longPress:(UILongPressGestureRecognizer*) gesture {
    UIButton* button = (UIButton*)gesture.view;
    if (gesture.state != UIGestureRecognizerStateEnded && gesture.state != UIGestureRecognizerStateCancelled)
    {
        button.tag = 1;
    } else {
        button.tag = 0;
    }
    if (button1.tag == 1 && button2.tag == 1) {
        NSLog(@"pressed both buttons for 3 seconds");
    } else {
        NSLog(@"not pressed both buttons for 3 seconds");
    }
}

最新更新