-
之前写过一个简单的图片查看器,在图片单击,双击事件处理上遇到问题,通过延时单击事件操作。
方法一:
详细:1.设置全局变量
1bool doubleTap;
单击时进行延时:
1234dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(
0.2
* NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
if
(doubleTap == YES)
return
;
//单击事件的相关操作
});
1doubleTap = YES;
****当是双击事件时:
在0.2秒之后进行单击事件操作
-------------------------------------
方法二:(在网易面试,当时讨论到这个问题,我说了自己方法,大牛给我了两个方法-只能说大牛就是大牛)123[self performSelector:
@selector
(test) withObject:nil afterDelay:.
2
];
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:
@selector
(test) object:nil];
---------------------------------
说到这简单的总结下相关延时操作:
00001.建议使用的方法
123456- (
void
)delay1
{
// 延迟执行不要用sleep,坏处:卡住当前线程
[NSThread sleepForTimeInterval:
3
];
NSLog(@
"操作"
);
}
12345- (
void
)delay2
{
// 一旦定制好延迟任务后,不会卡主当前线程
}
00003.方法三12345678- (
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.方法四12345678- (
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]);
});
}
关于iOS延时操作,阶段性总结(部分关于点击,双击事件冲突)
最新推荐文章于 2022-03-02 16:04:21 发布