在 iOS7 中,我们遇到了间歇性错误。 iOS6 没有发生这种情况。
它不会立即开始,但进入游戏约 30 秒到约 2 分钟后,所有动画和 dispatch_after 命令都会立即发生。
更具体地说,动画正在发生,就好像“持续时间:”值是 0,即使它绝对不是 0。 更具体地说,dispatch_after 就像 wait = 0 一样发生。
一旦启动,它就会一直存在,直到软件终止。
我不知道如何调试它,或者它是否是 iOS7 错误。任何想法/帮助将不胜感激!
最佳答案
问题是您认为您的完成 block 被过早调用了吗?
如果是这样,您是否检查过传递到完成 block 中的 bool 值的值?如果 bool 值为真,您可能只想执行该 block 中的语句。
例如
[UIView animateWithDuration... animations:^{
//do something
} completion:^(BOOL finished) {
if (finished) {
// do something
}
}];
我在动画开始之前调用完成 block 时看到了这一点,但实际上是因为其他东西取消了动画,因此 finished = NO
。
这没有回答有关 dispatch_after
的问题,因此您可能仍然遇到那里的错误。
关于ios - dispatch_after 和 [UIView 动画 : duration] happen immediately (but shouldn't),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19106061/