我有这段代码:
[UIView animateWithDuration:0.8
animations:^{
[self methodToRun];
}
completion:^(BOOL finished){
[self anotherMethod];
}];
虽然methodToRun中有东西,但应用程序不会等待0.8秒并继续运行anotherMethod。有没有什么方法可以让我在运行第二位之前等待0.8秒?
答案 0 :(得分:9)
不要滥用像这样的动画块。如果你真的想要延迟,请使用Ken链接的方法,甚至更简单的方法是使用GCD(iOS 4+)。
以下是使用您在问题中使用的0.8
延迟的示例:
dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC * 0.8);
dispatch_after(delay, dispatch_get_main_queue(), ^(void){
[self anotherMethod];
});
答案 1 :(得分:4)
您可以添加对[NSTimer performSelector:withObject:afterDelay]
的调用,而不是依赖于完成参数。