2010-04-13 44 views
1

我有一个简单的应用程序,按钮,UIImageView和NSTimer。 定时器每5秒反复启动一次以更新ImageView,同时该按钮仅停止定时器并切换到另一个View。NSTimer冻结应用程序,直到它再次被触发?

问题是,当我按下按钮时,几秒钟内没有任何反应(直到定时器再次启动)。

有没有办法导致按钮停止计时器,并在任何给定的时间而不是在计时器的间隔之间完成其工作?

该按钮在InterfaceBuilder中定义并连接到代码中的函数。

NSTimer代码:(我已经尝试&,但没有将它添加到RunLoop中)。

updateTimer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(updateImageViews) userInfo:nil repeats:YES];

NSRunLoop* runLoop = [NSRunLoop currentRunLoop]; 
[[NSRunLoop currentRunLoop] addTimer:updateTimer forMode:NSDefaultRunLoopMode]; 
[runLoop run]; 

谢谢!

+0

你使用无效来停止计时器...?你可以把一些代码...? – 2010-04-13 10:04:34

+0

我已经添加了计时器代码, 和是的,我使用invalidate来停止按下按钮时被调用的函数中的定时器 thanks – 2010-04-13 16:11:13

+0

当你说“没有任何事情发生”时,你的意思是没有出现下一个视图?定时器触发时视图是否出现?不是真的明确问题是什么,想看什么以及看到什么? – TechZen 2010-04-13 18:53:19

回答

1

“请注意,从NSRunloop的角度来看,NSTimer对象并不是”输入“ - 它们是一种特殊的类型,其意义之一就是它们在启动时不会导致运行循环返回。 (来自NSRunLoop类参考) - 所以我认为你阻止runloop继续?也许把计时器作为解决方案的另一个线程? 我也有我自己的问题:(

相关问题