首页 > 代码库 > 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方向判断(摘)