我要在这里回答一个问题。因为在评论中你澄清了你想要做什么。5秒后没有反应。我在这里展示的内容通常用于我所有的应用程序都是 opengl 应用程序。但是,即使您不在 open gl 中,它也应该对您有用。
你需要一些持续运行的东西......
- (void) startAnimation
{
if (!animating)
{
displayLink = [NSClassFromString(@"CADisplayLink") displayLinkWithTarget:self selector:@selector(drawView)];
[displayLink setFrameInterval:animationFrameInterval];
[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
animating = TRUE;
}
}
- (void)stopAnimation
{
if (animating)
{
[displayLink invalidate];
displayLink = nil;
animating = FALSE;
}
}
我们在 oepngl 应用程序中使用它来每隔 60 秒运行一次 drawview 函数,同时刷新显示。我不明白你为什么不能这样做。然后在您的 drawView 方法中检查开始时的时间并处理您需要的任何其他废话,例如在游戏中推进棋子或只是检查消息持续了多长时间..
- (void)drawView
{
timeThisRound = CFAbsoluteTimeGetCurrent();
并针对触发 5 秒开始的任何事件进行检查。如果你已经过了 5 秒,那么就做你想做的任何事情,而不是再等待他们点击按钮。
我有自己的消息系统可以做到这一点。我可以设置任何出现的消息,如果它应该在 5 秒后自行消失。或者,如果他们轻按它,它就会消失得更快。我在任何地方都使用 timeThisRound 方法(一个全局属性)来跟踪 NOW 的时间,这样我就可以拥有基于时间的东西以及基于触摸的东西。