美文网首页
手势长按,单击的区分

手势长按,单击的区分

作者: 渐渐行 | 来源:发表于2018-09-02 16:15 被阅读0次

     1.首先我们先添加一个按钮到控制器中

     2.分别给按钮添加 单击事件,和长按时间

       在面使用了2种 方式添加单击事件, addTarget 和 添加手势

     3.分析一下几种情况:

        1) 点击事件

           如果同时用 addTarget  和添加单击手势后

           发现添加了手势的点击会响应,也就是说 addTarget 方法添加的事件无效了

           执行的是这个方法 -(void)buttonTapListener:(UIGestureRecognizer*)recognizer

        2) 长按事件

           当我们按住这个按钮超过1秒时, 时间我们可以设置的longPress.minimumPressDuration = 1;

           监听长按手势的方法-(void)buttonLongPressListener:(UIGestureRecognizer*)recognizer

           被调用,而 点击事件没有响应了,2种方式的点击事件都没有响应了

          再来研究一下长按手势的事件,我们会发现:

          当手指点击下去,停留1秒后 事件响应了

          而手指离开时, 监听事件也响应了

          也就是,一个长按手势,会调用两次事件.

          我们可以根据 state 来判断手指是点击还是离开

            UIGestureRecognizerStateBegan,  手势开始

            UIGestureRecognizerStateChanged, 手势移动了

            UIGestureRecognizerStateEnded,  手势结束

    [self.button addTarget:self action:@selector(buttonOnClickListener:) forControlEvents:UIControlEventTouchUpInside];

    UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(buttonTapListener:)];

    UILongPressGestureRecognizer  * longPress =[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(buttonLongPressListener:)];

    longPress.minimumPressDuration = 1;

    [self.button addGestureRecognizer:tap];

    [self.button addGestureRecognizer:longPress];

}

-(void)buttonOnClickListener:(UIButton*)sender{

    DLog(@"buttonOnClickListener");

}

-(void)buttonTapListener:(UIGestureRecognizer*)recognizer{

    DLog(@"buttonTapListener");

}

-(void)buttonLongPressListener:(UIGestureRecognizer*)recognizer{

    DLog(@"buttonLongPressListener %ld",recognizer.state);

}

相关文章

网友评论

      本文标题:手势长按,单击的区分

      本文链接:https://www.haomeiwen.com/subject/cgsovttx.html