如果在调用UIDynamicAnimator
时如何停止applicationDidEnterBackground
?另外,如何在applicationWillEnterForeground
中启动计时器?这是我的代码:
在我的游戏viewcontroller.m
中 -(void)stoptime
{
[_animator removeAllBehaviors]; //_animator is my UIDynamicAnimator
[time invalidate];
}
在我的 app delegate.m
中- (void)applicationDidEnterBackground:(UIApplication *)application
{
gameViewController *new=[[gameViewController alloc]initWithNibName:@"gameViewController" bundle:nil];
[new stoptime];
}
答案 0 :(得分:1)
使用NSNotificationCenter
。在视图控制器中,侦听通知(在viewDidLoad
中):
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stoptime) name:@"StopTimeNotification" object:nil];
然后,在applicationDidEnterBackground:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"StopTimeNotification" object:nil];
}
最后,在您的stoptime
方法中:
-(void)stoptime {
[_animator removeAllBehaviors]; //_animator is my UIDynamicAnimator
[time invalidate];
time = nil;
}
当您的视图控制器即将被释放时,请务必调用以下命令:
[[NSNotificationCenter defaultCenter] removeObserver:self];
另外两条评论:
1 - 当计时器无效时,最好将其设置为nil
,以便稍后重复使用
2 - 不要使用new
作为任何变量的名称,它是保留的关键字。
修改强>
您可以使用类似的方法重新启动计时器。