最近做一个项目,需要用到UIPanGestureRecognizer做一个侧滑菜单,需求是不能向右侧拖动(点击按钮右滑),但可以向左侧手势拖动收回;于是需要判断拖动的方向,百度了一下,网上大部分的答案是这样判断的:
CGPoint translation = [recognizer translationInView:recognizer.view];
if(translation.x>0)
{
//向右滑动
}
else
{
//向左滑动
}
不过,在实际开发中,我发现不论是向左拖动或者是向右拖动,translation.x始终大于0,于是看了一下translationInView:的官方解释是获取手势在相对指定视图的移动距离,即在X,Y轴上移动的像素,应该是没有正负的,于是考虑用velocityInView:这个方法,这个方法是获取手势在指定视图坐标系统的移动速度,结果发现这个速度是具有方向的,
CGPoint velocity = [recognizer velocityInView:recognizer.view];
if(velocity.x>0)
{
//向右滑动
}
else
{
//向左滑动
}
于是乎,问题解决。