文档章节

UITableView 中 didSelectRowAtIndexPath 手势冲突或者双击事件处理

Jack088
 Jack088
发布于 2017/09/01 15:09
字数 316
阅读 83
收藏 0

实现双击事件的方法

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{  
        NSUInteger current = [[NSDate date] timeIntervalSince1970]*1000;
        if (current - taptime < 500) {
            // TODO
        }
        taptime = current;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    tapCount++;
    switch (tapCount)
    {
        case 1: //single tap
            [self performSelector:@selector(singleTap) withObject: nil afterDelay: .4];
            break;
        case 2: //double tap
            [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(singleTap) object:nil];
            [self performSelector:@selector(doubleTap) withObject: nil];
            break;
        default:
            break;
    }
}
- (void)singleTap
{
    tapCount = 0;
    // TODO
}

- (void)doubleTap
{
    tapCount = 0;
    // TODO
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *touch = [touches anyObject];
    int count = [touch tapCount];
    if (count == 2) {
        // TODO
        NSLog(@"success");
    }
} 

事件冲突

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    if([NSStringFromClass([touch.view class])isEqualToString:@"UITableViewCellContentView"]){
    // TODO

    return NO;
    }
return YES;
}

绑定单击,双击点击手势

// [A requireGestureRecognizerToFail:B]函数,它可以指定当A手势发生时,即便A已经滿足条件了,也不会立刻触发,会等到指定的手势B确定失败之后才触发。

- (void)viewDidLoad 
{
    // 单击的 Recognizer
    UITapGestureRecognizer* singleRecognizer;
    singleRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:selfaction:@selector(SingleTap:)];
    //点击的次数
    singleTapRecognizer.numberOfTapsRequired = 1; // 单击
    //给self.view添加一个手势监测;
  [self.view addGestureRecognizer:singleRecognizer];

    // 双击的 Recognizer
    UITapGestureRecognizer* doubleRecognizer;
    doubleRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:selfaction:@selector(DoubleTap:)];
    doubleTapRecognizer.numberOfTapsRequired = 2; // 双击
    //关键语句,给self.view添加一个手势监测;
    [self.view addGestureRecognizer:doubleRecognizer];

    // 关键在这一行,双击手势确定监测失败才会触发单击手势的相应操作
    [singleRecognizer requireGestureRecognizerToFail:doubleRecognizer];
}

-(void)SingleTap:(UITapGestureRecognizer*)recognizer{
// TODO
}

-(void)DoubleTap:(UITapGestureRecognizer*)recognizer{
// TODO
} 

© 著作权归作者所有

Jack088
粉丝 45
博文 550
码字总数 90026
作品 0
扬州
程序员
私信 提问
一个多UITableview的左右滑动简单解决方案

前言 本文源自实际开发中的需求,核心的要求有几个: 1、多个UITableview要支持左右滑动; 2、点击Tab也要有UITableview的滑动切换效果; 3、每个UITableview单独的下拉刷新和上拉加载; 效果...

落影loyinglin
2018/04/22
0
0
让UITableView响应touch事件

我们知道UITableView没有像UIButton那样可以通过addTarget方法来监听touch事件,因此在某些场合,特别是在UITableViewCell中包含UITextField的时候,我们很有可能想通过点击UITableView的其他...

vimfung
2012/07/01
13.4K
0
UITableView 一些方法

1. UITableView的初始化 [csharp] view plain copy UITableView tableview= [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 420)]; [tableview setDelegate:self]; [tableview s......

晨曦之光
2012/05/16
859
0
UITableView 的更多属性

UITableView的初始化 [csharp] UITableView tableview= [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 420)]; [tableview setDelegate:self]; [tableview setDataSource:self]......

meilidashijie
2013/01/04
1K
1
UITableView的简单的使用

@interface TableListViewController : UITableViewController @end @implementation TableListViewController //表格可以以分段或者以单个列表的形式显示其数据。对于简单的表格,返回1,表...

宇宙执政
2013/04/08
773
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 年迈渔夫遭黑帮袭抢

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享Elvis Presley的单曲《White Christmas》: 《White Christmas》- Elvis Presley 手机党少年们想听歌,请使劲...

小小编辑
今天
2K
20
CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
7
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
10
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
19
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部