关于iOS延时操作,阶段性总结(部分关于点击,双击事件冲突)
2014-12-14 11:56
295 查看
之前写过一个简单的图片查看器,在图片单击,双击事件处理上遇到问题,通过延时单击事件操作。
方法一:
详细:1.设置全局变量
bool doubleTap;在单击事件方法中设置延时操作
单击时进行延时:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
if (doubleTap == YES) return;
//单击事件的相关操作
});
****当是双击时:
doubleTap = YES;这样在0.2秒之后不会进行单机事件的相关操作,执行双击操作,记得设置(doubleTap =
NO)
****当是双击事件时:
在0.2秒之后进行单击事件操作
-------------------------------------
方法二:(在网易面试,当时讨论到这个问题,我说了自己方法,大牛给我了两个方法-只能说大牛就是大牛
)
[self performSelector:@selector(test) withObject:nil afterDelay:.2];
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(test) object:nil];上面的两个方法简单说就是,一个进行延时操作,一个就是取消延时操作,通过这个进行操控单机双击。(由于时间问题,只是简单试用了这个方法(好用
),还没有把图片查看的源代码修改,所以就不贴出来了)
---------------------------------
说到这简单的总结下相关延时操作:
00001.建议使用的方法
- (void)delay1
{
// 延迟执行不要用sleep,坏处:卡住当前线程
[NSThread sleepForTimeInterval:3];
NSLog(@"操作");
}00002.方法二
- (void)delay2
{
// 一旦定制好延迟任务后,不会卡主当前线程
[self performSelector:@selector(download:) withObject:@"http://美女.jpg" afterDelay:3];
}
00003.方法三
- (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.方法四
- (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]);
});
}
方法一:
详细:1.设置全局变量
bool doubleTap;在单击事件方法中设置延时操作
单击时进行延时:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
if (doubleTap == YES) return;
//单击事件的相关操作
});
****当是双击时:
doubleTap = YES;这样在0.2秒之后不会进行单机事件的相关操作,执行双击操作,记得设置(doubleTap =
NO)
****当是双击事件时:
在0.2秒之后进行单击事件操作
-------------------------------------
方法二:(在网易面试,当时讨论到这个问题,我说了自己方法,大牛给我了两个方法-只能说大牛就是大牛
)
[self performSelector:@selector(test) withObject:nil afterDelay:.2];
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(test) object:nil];上面的两个方法简单说就是,一个进行延时操作,一个就是取消延时操作,通过这个进行操控单机双击。(由于时间问题,只是简单试用了这个方法(好用
),还没有把图片查看的源代码修改,所以就不贴出来了)
---------------------------------
说到这简单的总结下相关延时操作:
00001.建议使用的方法
- (void)delay1
{
// 延迟执行不要用sleep,坏处:卡住当前线程
[NSThread sleepForTimeInterval:3];
NSLog(@"操作");
}00002.方法二
- (void)delay2
{
// 一旦定制好延迟任务后,不会卡主当前线程
[self performSelector:@selector(download:) withObject:@"http://美女.jpg" afterDelay:3];
}
00003.方法三
- (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.方法四
- (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延时操作,阶段性总结(部分关于点击,双击事件冲突)
- 关于ListView中控件点击事件与Item点击事件冲突的问题
- 关于Dom部分操作各浏览器兼容(setAttribute 与添加事件)
- iOS 6.0之前 UITapGestureRecognizer手势和UIButton 点击事件冲突
- 关于TextView中,设置指定部分文字改变颜色,和指定部分文字点击事件
- 关于tap事件与tableView的点击冲突
- iOS UIWebView 拦截点击事件(双击缩放)
- ios之点击操作(单双指单双击)
- 关于ListView触摸事件和点击Item事件冲突解决方法
- 关于在ios设备中 span,div等点击事件无效
- iOS - 关于点击小图查看大图的封装(包含单击、双击、捏合手势)
- iOS UITapGestureRecognizer手势和UIButton 以及UITabelView点击事件冲突
- ios关于点击事件selector传参的问题,看似简单却容易混淆(已解决)
- Ios中手势点击事件和tableView点击事件冲突
- iOS 响应点击(单击或双击)scrollview空白处事件 使用NSNotification
- iOS过滤png图片透明部分点击事件
- 关于android中,菜单按钮点击事件首次执行之后再次执行需要双击按钮的问题
- IOS自定义图片浏览器,支持浏览多张图片,点击,双击,两手指缩放操作,并显示加载进度条
- iOS自定制tabbar与系统的tabbar冲突,造成第一次点击各个item图片更换选中,第二次选中部分item图片不改变
- 关于ListView中控件点击事件与Item点击事件冲突的问题