要实现手势拖拽,最重要的一点是要获得我们点击手机屏幕时的落点位置,然后让视图的位置随着我们拖拽的方向和坐标的变化而变化,就能达到我们要的效果。
以下是例子只处理了向右拖拽,如果是向左拖拽,您可根据需求自定义
1.创建手势并添加到相应试图上
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pangesture:)];
[self.mSliderView addGestureRecognizer:pan];
2.实现手势事件
/**
* 获取手势按下的地方
*/
CGPoint panGesturePoint = [gesture translationInView:self.mSliderView];
/**
* 处理像左/像右拖拽事件
*/
if (panGesturePoint.x < 0) {
[self transitionView:gesture.view];
} else {
gesture.view.center = CGPointMake(gesture.view.center.x + panGesturePoint.x, gesture.view.center.y);
}
/**
* 手势结束和失败时处理方式
*/
if (gesture.state == UIGestureRecognizerStateFailed || gesture.state == UIGestureRecognizerStateEnded) {
/**
* 试图向右拖拽超过试图本身一般位置时,关闭筛选试图;否则返回单初始位置
*/
if (gesture.view.center.x <= (kSizeScreenWidth / 2 + 60 + ((kSizeScreenWidth - 60) / 2))) {
... 回退动作
} else {
... 关闭动作
}
}
/**
* 清空位移数据,避免拖拽事件的位移叠加
*/
[gesture setTranslation:CGPointZero inView:gesture.view];