使用 UIPanGestureRecognizer 滑动视图时如何限制区域?

How to limit area when sliding a view with UIPanGestureRecognizer?

我已经设置了滑动视图的平移手势,如果它已经滑出,我想防止滑动。所以我在检查 UIGestureRecognizerStateChanged

时添加了这个
CGPoint velocity = [(UIPanGestureRecognizer *)sender velocityInView:self.view];

if (sender.state == UIGestureRecognizerStateChanged) {
    CGPoint velocity = [(UIPanGestureRecognizer *)sender velocityInView:self.view];

    if (self.slideMenuView.frame.origin.x > 0 && velocity > 0) {
        return;
    }

    // ...
}

看起来可行,但如果我向左滑动视图然后快速将其拖动到相反的方向,检查将失效:

请帮帮我。

更新:我已将项目上传到 GitHub:Vayn/ice

你可以试试吗。

if (self.view.frame.origin.x > 0) {
    sender.view.frame = CGRectMake(0, sender.view.frame.origin.y,
                                   sender.view.frame.size.width, sender.view.frame.size.height);
    return;
}

我不确定。我下载了你的项目。但是无法构建

library not found for -lSDCycleScrollView

@PhilCai1993的帮助下,我们终于找到了解决这个问题的方法:

if (sender.state == UIGestureRecognizerStateChanged) {
    // ...

    // Add the check at the end of the block
    if (sender.view.frame.origin.x >= 0) {
        sender.view.frame = CGRectMake(0, sender.view.frame.origin.y,
                                       sender.view.frame.size.width, sender.view.frame.size.height);
    }
}

更新幻灯片菜单视图的框架后,只是在块的末尾检查幻灯片菜单视图的位置。

感谢@anhtu 帮我解决了这个问题!