最近在做一个项目 用到了画图 当绘图结束3秒钟后会执行一些方法 但如果画了一笔又在3秒之内继续绘图的话就不执行下面的方法继续接受画图 请问应该如何实现这一监测呢?
版主 2# laigb 发表于 2012-2-10 12:58:58
使用NSTimer就可以了,时间不对了,就可以将其取消,继续别的任务。
高级工程师 3# sagexy 发表于 2012-2-10 16:45:54
laigb 发表于 2012-2-10 12:58
使用NSTimer就可以了,时间不对了,就可以将其取消,继续别的任务。

我现在自己实现了
在touchesEnded里面写[self performSelector:@selector(ConfirmWrite:) withObject:nil afterDelay:0.8f];
在touchesBegan里面写[[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(ConfirmWrite:) object:nil];

这样就可以实现了

点评

详情 回复 laigb  发表于 2012-2-10 22:13:03

这么一来不就是两个都必会执行了? 不是要有一定条件的才会执行?
版主 4# dabao 发表于 2012-2-10 16:50:18
sagexy 发表于 2012-2-10 16:45
我现在自己实现了
在touchesEnded里面写[self performSelector:@selector(ConfirmWrite:) withObject:ni ...

楼主,这样线程会不会有段时间不响应啊?
高级工程师 5# sagexy 发表于 2012-2-10 17:01:21
dabao 发表于 2012-2-10 16:50
楼主,这样线程会不会有段时间不响应啊?

这个方法是我在书上看到的 就是为了区别双击还是单击的  好像不会有段时间不响应 因为我在画图的时候 画完一笔后 还能继续画呀
版主 6# laigb 发表于 2012-2-10 22:13:03
sagexy 发表于 2012-2-10 16:45
我现在自己实现了
在touchesEnded里面写[self performSelector:@selector(ConfirmWrite:) withObject:ni ...

这么一来不就是两个都必会执行了?
不是要有一定条件的才会执行?
高级工程师 7# sagexy 发表于 2012-2-13 10:19:52
laigb 发表于 2012-2-10 22:13
这么一来不就是两个都必会执行了?
不是要有一定条件的才会执行?

[self performSelector:@selector(ConfirmWrite:) withObject:nil afterDelay:0.8f];
这个方法就是延时一段时间再执行一方法,但是一旦发生touchesBegan即会执行[[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(ConfirmWrite:) object:nil];取消刚才延时后想要执行那个的方法,即方法会被取消调用,如在延时时间过后没有touchesBegan发生,那就会执行那方法了,这个方法是在iphone sdk 3这本书上看到的,原型是区分单击和双击屏幕时都执行不同的方法

点评

详情 回复 laigb  发表于 2012-2-13 15:33:53

嗯 。这个也是可行的。
版主 8# laigb 发表于 2012-2-13 15:33:53
sagexy 发表于 2012-2-13 10:19
[self performSelector:@selector(ConfirmWrite:) withObject:nil afterDelay:0.8f];
这个方法就是延时一 ...

嗯 。这个也是可行的。
中级构架师 9# aidaeva 发表于 2012-2-23 10:41:33
您需要登录后才可以回帖 登录 | 注册

关于我们|手机版|Archiver|DEVDIV.COM ( 京ICP备07040843号 )  

GMT+8, 2012-5-19 17:33

Powered by DEVDIV.COM!

© 2010-2012 DEVDIV.COM Coummunity.

回顶部