关于iOS延时操作,阶段性总结(部分关于点击,双击事件冲突)

之前写过一个简单的图片查看器,在图片单击,双击事件处理上遇到问题,通过延时单击事件操作。

方法一:

详细:1.设置全局变量

?
1
bool doubleTap;
在单击事件方法中设置延时操作

单击时进行延时:

?
1
2
3
4
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)( 0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
         if (doubleTap == YES) return ;
         //单击事件的相关操作
     });


****当是双击时:

?
1
doubleTap = YES;
这样在0.2秒之后不会进行单机事件的相关操作,执行双击操作,记得设置(doubleTap = NO)

****当是双击事件时:

在0.2秒之后进行单击事件操作
-------------------------------------
方法二:(在网易面试,当时讨论到这个问题,我说了自己方法,大牛给我了两个方法-只能说大牛就是大牛奋斗

?
1
2
3
[self performSelector: @selector (test) withObject:nil afterDelay:. 2 ];
 
[NSObject cancelPreviousPerformRequestsWithTarget:self selector: @selector (test) object:nil];
上面的两个方法简单说就是,一个进行延时操作,一个就是取消延时操作,通过这个进行操控单机双击。(由于时间问题,只是简单试用了这个方法(好用 大笑),还没有把图片查看的源代码修改,所以就不贴出来了)

---------------------------------

说到这简单的总结下相关延时操作:

00001.建议使用的方法

?
1
2
3
4
5
6
- ( void )delay1
{
     // 延迟执行不要用sleep,坏处:卡住当前线程
     [NSThread sleepForTimeInterval: 3 ];
     NSLog(@ "操作" );
}
00002.方法二

?
1
2
3
4
5
- ( void )delay2
{
     // 一旦定制好延迟任务后,不会卡主当前线程
     [self performSelector: @selector (download:) withObject:@ "http://美女.jpg" afterDelay: 3 ];
}

00003.方法三

?
1
2
3
4
5
6
7
8
- ( void )delay3
{
     // 3秒后回到主线程执行block中的代码
     dispatch_queue_t queue = dispatch_get_main_queue();
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)( 3 * NSEC_PER_SEC)), queue, ^{
         NSLog(@ "------task------%@" , [NSThread currentThread]);
     });
}

00004.方法四

?
1
2
3
4
5
6
7
8
- ( void )delay4
{
     // 3秒后自动开启新线程 执行block中的代码
     dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 );
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)( 3 * NSEC_PER_SEC)), queue, ^{
         NSLog(@ "------task------%@" , [NSThread currentThread]);
     });
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值