iOS 阻止向下滑动

iOS Block swipe down

我正在尝试使用 gestureRecognizerShouldBegin

禁用向下滑动

这是我的代码:

-(BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer {
    CGPoint translation = [gestureRecognizer translationInView:self.scrollView];
    // Check for horizontal and up gesture
    if (fabsf(translation.y) > fabsf(translation.x) && fabsf(translation.y) > 0) {
        return YES;
    }
    return NO;
}

水平方向被正确阻挡,但向下滑动没有。你知道我应该怎么写这个条件吗?

正如你们在评论中所建议的那样 - 这里是解决方案 :

-(BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer {
    CGPoint translation = [gestureRecognizer translationInView:self.scrollView];
    // Check for horizontal and Up gesture
    if (fabsf(translation.y) > fabsf(translation.x) && translation.y < 0 )
    {
        return YES;
    }
    return NO;
}

然后我想出了一些在用户体验方面可能更好的东西:

直接在PanGestureRecognizer我加了:

if (translation.y > 0) {
            panedView.center = CGPointMake(YOUR_CENTER.x, YOU_CENTER.y + translation.y /10);
        }

它创建了一个非常小的翻译,使整个动画对用户来说更加流畅。

谢谢!