页面控件手势与 swrereveal 控制器冲突



我在我的应用程序中添加了swrevealcontroller。单击表中的项目时,将打开一个新的视图控制器。我在该视图控制器中添加了一个页面控件。因此,页面控件的第一次平移手势有效,但下次平移手势不适用于页面控制。请告诉我如何避免平移手势的冲突。

- (void)_handleRevealGesture:(UIPanGestureRecognizer *)recognizer
{
    NSLog(@"handle pan gesture");
    CGPoint velocity = [recognizer velocityInView:self.view]; if(velocity.x > 0)
    {
        NSLog(@"gesture went right");
    }
    else
    {
        NSLog(@"gesture went left");
        if(self.isReaveled)
        {
            switch ( recognizer.state )
            {

                case UIGestureRecognizerStateBegan:
                    [self _handleRevealGestureStateBeganWithRecognizer:recognizer];
                    break;
                case UIGestureRecognizerStateChanged:
                    [self _handleRevealGestureStateChangedWithRecognizer:recognizer];
                    break;
                case UIGestureRecognizerStateEnded:
                    [self _handleRevealGestureStateEndedWithRecognizer:recognizer];
                    break;
                case UIGestureRecognizerStateCancelled:
                    //case UIGestureRecognizerStateFailed:
                    [self _handleRevealGestureStateCancelledWithRecognizer:recognizer];
                    break;
                default:
                    break;
            }
        }
    }

}

我已经修改了上面的代码以使其工作,但它不起作用。

您首先在使用PageController的View Controller中设置了SwrevealController的平移手势的委托。 为此,还要添加手势识别器的委托。

比实现手势识别器的此委托方法。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    if (otherGestureRecognizer.delegate == self)
        return NO;
    if ([[otherGestureRecognizer.view class] isSubclassOfClass:[UIPageViewController class]]) {
        NSLog(@"Allow1 %@", [otherGestureRecognizer description]);
        return YES;
    }
    NSLog(@"Deny %@", [otherGestureRecognizer description]);
    return NO;
}

希望对您有所帮助。

最新更新