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

如何在iOS中检测两个按钮同时长按的手势?,ios,objective-c,iphone,uilongpressgesturerecogni,Ios,Objective C,Iphone,Uilongpressgesturerecogni,我的应用程序中有两个按钮。我想在两个按钮保持在一起至少3秒钟时检测手势。我知道可以检测到单按钮长按手势,但我想在两个按钮同时按下并保持几秒钟时调用一个函数。还有其他方法吗?您可以使用此代码 @IBAction func longPress(gesture:UILongPressGestureRecognizer) { let view = gesture.view! print("state = \(gesture.state.rawValue)") if gesture

我的应用程序中有两个按钮。我想在两个按钮保持在一起至少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");
    }
}

可能重复,但长按3秒如何长按退出长按您可以使用UILongPressGestureRecognitor并将minimumPressDuration设置为3秒。第二个链接不可用releveant@Rishab-[按钮视图]:发送到实例0x7fee63018680'的无法识别的选择器似乎已将按钮的操作选择器连接到长按。您应该添加一个长按手势识别器实例,而不是按钮的动作选择器