• 手势(2)——单击,双击,判断左右划


    #import "QYCustomView.h"

    #define  HOR_SWIPE_MIN 20 //水平上,当低于这个值的时候, 不认为他是一个横扫的手势
    #define  VAR_SWIPE_MAX 40 //在垂直上,设置这误差范围,如果大于这个值的话, 横扫无效

    @implementation QYCustomView

    //当我们的事件开始的时候调, 对于touch来说, 实际上当手指头放到屏幕上的时候,这个方法会被调用
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    {
        /*
    //    NSLog(@"%s",__func__);
    //   touches里存放的对象类型是UITouch类型,第一个UITouch表示的是一个手指
        UITouch *touch = [touches anyObject];
        if (touch.tapCount == 1) {
    //        anyObject任意取出一个对象
        //        解决双击事件,出现先单击,后双击的问题?
        //        1、让单击事件, 延迟执行, 如果有双击事件 在双击事件执行完成之后, 取消单击事件
        //        [self singleClicked:touch];
            self.currentSingleTouch = touch;
            [self performSelector:@selector(singleClicked:) withObject:touch afterDelay:2.0];
            
        }else if (touch.tapCount == 2)
        {
            
            [self doubleClicked:touch];

        }
         */
        UITouch *tch = [touches anyObject];
    //    locationInView返回的值是当前custormView这个视图上点击的位置
        self.startPoint = [tch locationInView:self];
    }



    - (void)singleClicked:(UITouch*)touch
    {
        NSLog(@"单击事件");
    }

    - (void)doubleClicked:(UITouch*)touch
    {
        NSLog(@"双击事件");
    //    需要注意的是,取消事件的target,参数 SEL必须与perforSelector方法保持一致, 否则方法取消不了
        [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(singleClicked:) object:self.currentSingleTouch];
    }

    ////当我们手指点击屏幕,并且没有抬起而滑动的时候, 这个方法被调用, 由此可知这个方法是连续被调用的。
    //- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
    //{
    //    NSLog(@"%s",__func__);
    //}
    //
    //
    //当我们的事件对束的时候调,对于touch来说, 实际上是当手指头离开屏幕的时候,这个方法会被调用
    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
    {
        UITouch *endTch  = [touches anyObject];
        CGPoint currentPoint = [endTch locationInView:self];
        
    //   fabsf 求绝对值的方法, 参数传入的是一具float类型
        if ((fabsf(currentPoint.x - self.startPoint.x) >= HOR_SWIPE_MIN) &&
            (fabsf(currentPoint.y - self.startPoint.y) <= VAR_SWIPE_MAX)) {
            if (currentPoint.x - self.startPoint.x > 0) {
                NSLog(@"Right Swipe");
            }else
            {
                NSLog(@"Left SWipe");
            }
        }
    }
    //
    ////当我们的事件被取消的时候, 比如说:手指点击在屏幕上, 突然来电话, 这个时候, 电话的优先级很高,
    ////所有的事件都应该被取消。 这个方法会被调用
    - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
    {
        NSLog(@"%s",__func__);
        self.startPoint = CGPointZero;
    }


    // Only override drawRect: if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    - (void)drawRect:(CGRect)rect
    {
        // Drawing code
        self.backgroundColor = [UIColor orangeColor];
    }
    @end

  • 相关阅读:
    OpenCv 014---图像插值(Image interpolation)
    基础正则
    Base -快捷键|通配符|特殊符号|输出(正确与错误的保存)
    linux 软链接 硬链接
    shell 别名alias
    yii2 源码分析1从入口开始
    php const static define 基本用法和区别
    php-fpm, nginx ,fastcgi ,php-cgi 关系粗解
    php扩展开发3--扩展类传参数
    php扩展开发2--添加类
  • 原文地址:https://www.cnblogs.com/wangdelong/p/3848526.html
Copyright © 2020-2023  润新知