zoukankan      html  css  js  c++  java
  • UIPanGestureRecognizer判断滑动的方向

    .h文件
    
    CGFloat const gestureMinimumTranslation = 20.0 ;
    typedef enum : NSInteger {
        kCameraMoveDirectionNone,
        kCameraMoveDirectionUp,
        kCameraMoveDirectionDown,
        kCameraMoveDirectionRight,
        kCameraMoveDirectionLeft
    } CameraMoveDirection ;
    
    @interface FCDetailViewController : FCMainViewController
    {
        CameraMoveDirection direction;
    }
    
    .m文件  --------
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        
        //监听滑动手势
        UIPanGestureRecognizer *recognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeFrom:)];
        [self.view addGestureRecognizer:recognizer];
    }
    
    - (void)handleSwipeFrom:(UIPanGestureRecognizer*)gesture
    {
        CGPoint translation = [gesture translationInView:self.view];
        if (gesture.state == UIGestureRecognizerStateBegan ){
            direction = kCameraMoveDirectionNone;
            
        }else if(gesture.state == UIGestureRecognizerStateChanged && direction == kCameraMoveDirectionNone){
            direction = [ self determineCameraDirectionIfNeeded:translation];
    
            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){
            //NSLog (@ "Stop" );
        }
    }
    
    - (CameraMoveDirection)determineCameraDirectionIfNeeded:(CGPoint)translation
    {
        if (direction != kCameraMoveDirectionNone)
            return direction;
     
        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;
            }
            
        }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;
    }
  • 相关阅读:
    jQuery Deferred和Promise的使用介绍:
    asp.net客户端IP跟踪
    jquery常用的一些方法
    前端音频流播放
    c# Http请求下载二进制流文件
    iView表格行验证问题
    【已解决】Https请求—未能创建 SSL/TLS 安全通道
    安全开发规范
    数据库设计规范
    高性能开发规范
  • 原文地址:https://www.cnblogs.com/hw140430/p/4414006.html
Copyright © 2011-2022 走看看