1井誉,根據(jù)手勢(shì)變動(dòng)狀態(tài)判斷
- (void)panHandle:(UIPanGestureRecognizer *)pan {
// 獲取頂部視圖
TABBaseCardView * cardView = self.cards[self.currentIndex];
if (pan.state == UIGestureRecognizerStateChanged) {
[self commitTranslation:[pan translationInView:cardView]];
}
}
- (void)commitTranslation:(CGPoint)translation
{
CGFloat absX = fabs(translation.x);
CGFloat absY = fabs(translation.y);
// 設(shè)置滑動(dòng)有效距離
if (MAX(absX, absY) < 10)
return;
if (absX > absY ) {
if (translation.x<0) {
//向左滑動(dòng)
self.isSliding = LEFT;
}else{
self.isSliding = RIGHT;
//向右滑動(dòng)
}
} else if (absY > absX) {
if (translation.y<0) {
//向上滑動(dòng)
self.isSliding = UP;
}else{
//向下滑動(dòng)
self.isSliding = DOWN;
}
}
}
第二種手勢(shì)有個(gè)代理方法 runturn no禁止滑動(dòng)冗荸,yes可以滑動(dòng)
- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer {
CGPoint translation = [gestureRecognizer translationInView:gestureRecognizer.view];
//相對(duì)有手勢(shì)父視圖的坐標(biāo)點(diǎn)(注意如果父視圖是scrollView,locationPoint.x可能會(huì)大于視圖的width)
if (translation.x < 0) {
//向左滑
NSLog(@"向左滑");
return YES;
}else if (translation.x > 0) {
//向右滑
NSLog(@"向右滑");
return YES;
}
if (translation.y < 0) {
//向上滑
NSLog(@"向上滑");
return NO;
}else if (translation.y > 0) {
//向下滑
NSLog(@"向下滑");
return NO;
}
return YES;
}