要實現手勢拖拽,最重要的一點是要獲得我們點擊手機屏幕時的落點位置,然后讓視圖的位置隨着我們拖拽的方向和坐標的變化而變化,就能達到我們要的效果。
以下是例子只處理了向右拖拽,如果是向左拖拽,您可根據需求自定義
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];