美文网首页
iOS 同一个View识别单击和双击手势

iOS 同一个View识别单击和双击手势

作者: 毛毛虫灾害 | 来源:发表于2016-09-10 17:30 被阅读3884次

    需求:在同一个cell上响应单击和双击方法,分别进入不同方法。
    在视图上同时识别单击手势和双击手势的问题在于,当检测到一个单击操作时,无法确定是确实是一个单击操作或者只是双击操作中的第一次点击。解决这个问题的方法就是:在检测到单击时,需要等一段时间等待第二次点击,如果没有第二次点击,则为单击操作;如果有第二次点击,则为双击操作。
    检测手势有两种方法,一种是定制子视图,重写视图从UIResponder类中继承来的事件处理方法,touchesBegan:withEvent:等一系列方法来检测手势;另一个方法是使用手势识别器,即UIGestureRecognize的各种具体子类。

    //在cell上添加 bgView,给bgView添加两个手势检测方法     
    bgView.userInteractionEnabled = YES;
    UITapGestureRecognizer *singleTapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleSingleTap:)];
    singleTapGesture.numberOfTapsRequired =1;
    singleTapGesture.numberOfTouchesRequired  =1;
    [bgView addGestureRecognizer:singleTapGesture];
               
    UITapGestureRecognizer *doubleTapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleDoubleTap:)];
    doubleTapGesture.numberOfTapsRequired =2;
    doubleTapGesture.numberOfTouchesRequired =1;
    [bgView addGestureRecognizer:doubleTapGesture];
    //只有当doubleTapGesture识别失败的时候(即识别出这不是双击操作),singleTapGesture才能开始识别          
    [singleTapGesture requireGestureRecognizerToFail:doubleTapGesture];
    
    //两个手势分别响应的方法
    -(void)handleSingleTap:(UIGestureRecognizer *)sender{
    //chooseNum为手势响应的view的tag值
       chooseNum=(int)sender.view.tag;
       CGPoint touchPoint = [sender locationInView:self];
    }
    
    -(void)handleDoubleTap:(UIGestureRecognizer *)sender{
    //chooseNum为手势响应的cell的tag值
       chooseNum=(int)sender.view.tag;
       UITableViewCell *v = (UITableViewCell *)[[sender view] superview];
       chooseNum=v.tag;
    }
    
    

    参考文章地址 :
    http://www.voidcn.com/blog/Dancer2015/article/p-5957064.html

    相关文章

      网友评论

          本文标题:iOS 同一个View识别单击和双击手势

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