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点击");
    }
  • 相关阅读:
    机器学习中常见的优化算法
    linux端安装Anaconda,方便远端访问jupyter
    核心③自动分号插入
    setTimeout 和 setInterval
    核心②undefined 和 null
    类型④类型转换
    核心①为什么不要使用 eval
    类型③instanceof 操作符
    类型①相等与比较
    类型②typeof 操作符
  • 原文地址:https://www.cnblogs.com/mapanguan/p/9209176.html
Copyright © 2011-2022 走看看