这两天学习 iOS 开发,尝试制作一个左滑菜单,目前已经实现了大部分功能。不过现在碰到一个棘手问题——
问题
通过 UIPanGestureRecognizer 可以给菜单增加向右滑动收缩的手势,可是如果直接绑定手势,菜单在完全弹出后还能再向右侧滑……于是就有了下面的奇怪效果:

失败方案
我想限制菜单如果已完全弹出就只能左滑,于是在 UIGestureRecognizerStateChanged 状态下加入检查代码:
CGPoint velocity = [(UIPanGestureRecognizer *)sender velocityInView:self.view];
if (self.slideMenuView.frame.origin.x > 0 && velocity > 0) return;
我的想法是 slideMenuView 如果完全弹出,那么它的 origin.x 应该是 0,如果大于 0 且方向往右,就不更新位置。
似乎有用,不过如果先向左滑,再向右以很快的速度滑动,检查就会失效:

求解答
我要实现的滑动菜单和网上流行的效果不样,找了半天没找到相关文档,现在只能向各位高手求教了。希望各位能帮忙分析一下问题出在哪里,谢谢啊~