首页 > 代码库 > UIPanGestureRecognizer方向判断(摘)
UIPanGestureRecognizer方向判断(摘)
#pragma mark滑动手势的识别start
typedef enum:NSInteger{ kCameraMoveDirectionNone, kCameraMoveDirectionUp, kCameraMoveDirectionDown, kCameraMoveDirectionRight, kCameraMoveDirectionLeft}CameraMoveDirection;//枚举方向
-(void)panClick:(UIPanGestureRecognizer *) gesture{ CGPoint translation = [gesture translationInView:self];//最后会有这个方法的说明 if(gesture.state ==UIGestureRecognizerStateBegan) { direction = kCameraMoveDirectionNone; } else if(gesture.state ==UIGestureRecognizerStateChanged&& direction == kCameraMoveDirectionNone) { direction = [self determineCameraDirectionIfNeeded:translation];//方向函数//方向参数是上面定义的那个枚举类型 // ok, now initiate movement in the direction indicated by the user‘s gesture switch(direction) { case kCameraMoveDirectionDown:{ NSLog(@"Start moving down");break; } case kCameraMoveDirectionUp:{ NSLog(@"Start moving up");break; } case kCameraMoveDirectionRight: NSLog(@"Start moving right"); //和左右滑动的按钮功能搬到这里来break; case kCameraMoveDirectionLeft: NSLog(@"Start moving left");break; default: break; } } else if(gesture.state ==UIGestureRecognizerStateEnded) { // now tell the camera to stop NSLog(@"Stop"); }}
CGFloat const gestureMinimumTranslation=20.0;//最小形变的决定吧- (CameraMoveDirection)determineCameraDirectionIfNeeded:(CGPoint)translation{ if(direction != kCameraMoveDirectionNone) return direction; // determine if horizontal swipe only if you meet some minimum velocity if(fabs(translation.x) > gestureMinimumTranslation) { BOOL gestureHorizontal = NO; if(translation.y ==0.0) gestureHorizontal = YES; else gestureHorizontal = (fabs(translation.x / translation.y) >5.0); if(gestureHorizontal) { if(translation.x >0.0) return kCameraMoveDirectionRight; else return kCameraMoveDirectionLeft; } } // determine if vertical swipe only if you meet some minimum velocity else if(fabs(translation.y) > gestureMinimumTranslation) { BOOL gestureVertical = NO; if(translation.x ==0.0) gestureVertical = YES; else gestureVertical = (fabs(translation.y / translation.x) >5.0); if(gestureVertical) { if(translation.y >0.0) return kCameraMoveDirectionDown; else return kCameraMoveDirectionUp; } } return direction;}
CGPoint location = [sender locationInView:self.view];CGPoint translation;translation.x = location.x - viewStartLocation.x;translation.y = location.y - viewStartLocation.y;//2个函数的区别,一个坐标,一个是形变量
//这个方法用在了那个日历的插件里面
UIPanGestureRecognizer方向判断(摘)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。