addCoordinatedAnimations动画块未运行

时间:2016-08-23 17:01:00

标签: ios swift uikit tvos

在Xcode 7.3.1上的tvOS中,我使用UIFocusAnimationCoordinator的addCoordinatedAnimations函数的地方之一是在动画之前运行完成:

if (coordinator != nil) {
    var tempDidAnimate: Bool = false  // breakpoint 1
    coordinator!.addCoordinatedAnimations({
        self.myFunctionThatDoesntGetCalled() // breakpoint 2
        tempDidAnimate = true
        }, completion: {
            () in
            if tempDidAnimate == false {
                print("whaaaat?!??")  // breakpoint 3
                self.myFunctionThatDoesntGetCalled()                        
            }
    })
}

被击中的断点顺序是1,3。从不2.。

这种对if tempDidAnimate == false的粗暴使用确实解决了这个问题,但我不明白为什么会出现这个问题。

任何想法都可能出错?

一个想法:我已经在堆栈中的addCoordinatedAnimations块中...我不这么认为,但是堆栈很复杂......看不到任何通过代码检查的方法。

1 个答案:

答案 0 :(得分:0)

tl;博士:是的,我已经进入了一个动画块#$& ^ @#$!

好的,事实证明,在我的"聪明地"重构的代码,我忘记了我调用动画块来重置任何当前活动的自动布局动画(通过请求持续时间为0的新动画)。然后在完成时,我的代码被调用...因为我正式已经在动画块中,操作系统拒绝执行上面的主动画块,并直接跳到完成。不知道这种操作系统行为是否记录在任何地方。