zoukankan      html  css  js  c++  java
  • iOS处理视图上同时添加单击与双击手势的冲突问题

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

    如果是在cell上添加的视图,则可能与cell点击事件发生冲突,解决办法如下

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
     
        TableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
        if (cell.bgView.gestureRecognizers.firstObject.numberOfTouches) {
            NSLog(@"手势响应了");
            return;
        }
        NSLog(@"cell点击");
    }
  • 相关阅读:
    aa
    ECS上搭建Docker(CentOS7)
    mysql时间戳转日期
    rsync用法
    docker安装mysql8
    使用Docker安装mysql,挂载外部配置和数据
    my.cnf
    Centos7通过yum安装jdk8
    maven添加本地包命令mvn install:install-file
    Mysql——查看数据库,表占用磁盘大小
  • 原文地址:https://www.cnblogs.com/mapanguan/p/9209176.html
Copyright © 2011-2022 走看看