最近做一個項目,需要用到UIPanGestureRecognizer做一個側滑菜單,需求是不能向右側拖動(點擊按鈕右滑),但可以向左側手勢拖動收回;於是需要判斷拖動的方向,百度了一下,網上大部分的答案是這樣判斷的: CGPoint translation = [recognizer translat
最近做一個項目,需要用到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
{
//向左滑動
}
於是乎,問題解決。