Ios 如何在Objective-C中实现扫持手势识别器?

Ios 如何在Objective-C中实现扫持手势识别器?,ios,objective-c,uigesturerecognizer,uiswipegesturerecognizer,uilongpressgesturerecogni,Ios,Objective C,Uigesturerecognizer,Uiswipegesturerecognizer,Uilongpressgesturerecogni,我正在开发一个应用程序,它可以像遥控器一样控制不同的设备,如游戏机、机顶盒等 应用程序包含不同类型的控件,如手势和按钮,以远程方式执行事件 单手势视图包含多个手势识别器,如下所示: 使用UITapGestureRecognitor进行1次手指点击 使用UITapGestureRecognitor进行2次手指点击 使用UISweepGestureRecognitor进行1次手指滑动 使用UISweepGestureRecognitor进行2次手指滑动 我的要求是实现1个手指滑动手势识别器以及保持事

我正在开发一个应用程序,它可以像遥控器一样控制不同的设备,如游戏机、机顶盒等

应用程序包含不同类型的控件,如手势和按钮,以远程方式执行事件

单手势视图包含多个手势识别器,如下所示:

  • 使用UITapGestureRecognitor进行1次手指点击

  • 使用UITapGestureRecognitor进行2次手指点击

  • 使用UISweepGestureRecognitor进行1次手指滑动

  • 使用UISweepGestureRecognitor进行2次手指滑动

  • 我的要求是实现1个手指滑动手势识别器以及保持事件。因此,这将继续我的滑动操作,直到用户无法从视图中移除其手指为止

    我在UISweepGestureRecognizer之后尝试了UILongPressGestureRecognizer,但这对我不起作用,因为它是随着滑动运动执行的。我想在刷完后再刷这个,但手指不会移开

    我的代码片段: 请针对我的要求提出更正或解决方案


    提前谢谢

    使用UIGestureRecognitor endstate在
    SwipegestureSignle\u Handle
    方法中初始化另一个手势。@iPhonec:我已经这样做了,但UILongPressGestureRecognitor仍然与UISweepGestureRecognitor一起工作。您的代码表明您正在与SwipeGesture一起添加长手势,最初不要添加它,只在刷卡结束后添加。@yashica15:希望这有帮助:@Mrunal:我已经试过了。不符合我的要求。谢谢
    -(void) gestureView:(UIView*)viewGesture {
        UISwipeGestureRecognizer *swipeGestureSingleRight;
        UISwipeGestureRecognizer *swipeGestureSingleLeft;
        UISwipeGestureRecognizer *swipeGestureSingleUp;
        UISwipeGestureRecognizer *swipeGestureSingleDown;
    
        swipeGestureSingleUp = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGestureSingle_Handle:)];
        [swipeGestureSingleUp setDelegate:self];
        [swipeGestureSingleUp setDirection:(UISwipeGestureRecognizerDirectionUp)];
        [swipeGestureSingleUp setNumberOfTouchesRequired:1];
        [viewGesture addGestureRecognizer:swipeGestureSingleUp];
    
        swipeGestureSingleDown = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGestureSingle_Handle:)];
        [swipeGestureSingleDown setDelegate:self];
        [swipeGestureSingleDown setDirection:(UISwipeGestureRecognizerDirectionDown)];
        [swipeGestureSingleDown setNumberOfTouchesRequired:1];
        [viewGesture addGestureRecognizer:swipeGestureSingleDown];
    
        swipeGestureSingleRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGestureSingle_Handle:)];
        [swipeGestureSingleRight setDelegate:self];
        [swipeGestureSingleRight setDirection:(UISwipeGestureRecognizerDirectionRight)];
        [swipeGestureSingleRight setNumberOfTouchesRequired:1];
        [viewGesture addGestureRecognizer:swipeGestureSingleRight];
    
        swipeGestureSingleLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGestureSingle_Handle:)];
        [swipeGestureSingleLeft setDelegate:self];
        [swipeGestureSingleLeft setDirection:(UISwipeGestureRecognizerDirectionLeft)];
        [swipeGestureSingleLeft setNumberOfTouchesRequired:1];
        [viewGesture addGestureRecognizer:swipeGestureSingleLeft];
    
        longPressGestureOnSwipe = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressGesture_Handle:)];
        longPressGestureOnSwipe.minimumPressDuration = 0.03;
        longPressGestureOnSwipe.delegate = self;
        [viewGesture addGestureRecognizer:longPressGestureOnSwipe];
        isSwipeEnd = false;
        [longPressGestureOnSwipe setEnabled:isSwipeEnd];
    }
    
    - (void)swipeGestureSingle_Handle:(UISwipeGestureRecognizer*)sender {
        if (sender.state == UIGestureRecognizerStateEnded) {
            singleTouchSwipeSenderDirection = sender.direction;
            isSwipeEnd = true;
            [longPressGestureOnSwipe setEnabled:isSwipeEnd];
        }
    }
    
    -(void)longPressGesture_Handle:(UILongPressGestureRecognizer*)sender {
        if (sender.state == UIGestureRecognizerStateEnded) {
            isSwipeEnd = false;
            [longPressGestureOnSwipe setEnabled:isSwipeEnd];
        }
    }
    
    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
        return YES;
    }
    
    - (void)touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event {
        if (isSwipeEnd) {
            [super touchesBegan:touches withEvent:event];
        } else {
            return;
        }
    }