禁用手势识别器

Vin*_*ins 36 xcode objective-c swipe uigesturerecognizer

我有两种类型的识别器,一种用于轻敲,一种用于轻扫

UIGestureRecognizer *recognizer;

//TAP
recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(numTap1:)];
[(UITapGestureRecognizer *)recognizer setNumberOfTouchesRequired:1];
[self.view addGestureRecognizer:recognizer];
self.tapRecognizer = (UITapGestureRecognizer *)recognizer;
recognizer.delegate = self;
[recognizer release];

//SWIPE RIGHT
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRight:)];
self.swipeRightRecognizer =(UISwipeGestureRecognizer *)recognizer;
swipeRightRecognizer.direction = UISwipeGestureRecognizerDirectionRight;
[self.view addGestureRecognizer:swipeRightRecognizer];
self.swipeRightRecognizer = (UISwipeGestureRecognizer *)recognizer;
[recognizer release];
Run Code Online (Sandbox Code Playgroud)

使用此功能,我可以禁用某些对象的点击.

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

if ((touch.view == loseView) || (touch.view == subBgView) || (touch.view == btnAgain)) {

    return NO;
}

return YES;
}
Run Code Online (Sandbox Code Playgroud)

如何禁用滑动?

非常感谢!

Pey*_*loW 117

UIGestureRecognizer有一个名为的财产enabled.这应该足以禁用你的滑动:

swipeGestureRecognizer.enabled = NO;
Run Code Online (Sandbox Code Playgroud)

  • 此外,您可以在附加手势的视图上设置userInteractionEnabled = NO.如果您使用的某种叠加层无论如何都要禁用底层内容,这很方便.这也将根据视图的隐藏和alpha值自动切换. (3认同)

Dee*_*olu 17

为什么不设置滑动手势识别器的委托,并在同一委托方法中处理它们.

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    if ( [gestureRecognizer isMemberOfClass:[UITapGestureRecognizer class]] ) {
        // Return NO for views that don't support Taps
    } else if ( [gestureRecognizer isMemberOfClass:[UISwipeGestureRecognizer class]] ) {
        // Return NO for views that don't support Swipes
    }

    return YES;
}
Run Code Online (Sandbox Code Playgroud)