【发布时间】:2016-08-23 17:01:00
【问题描述】:
在 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 块中...我不这么认为,但堆栈很复杂...看不到任何通过代码检查的方法。
【问题讨论】:
-
你在哪里添加这个?应将自定义焦点动画添加到
didUpdateFocusInContext,其中coordinator参数不是可选的。 -
我从 didUpdateFocusInContext 开始,然后深入调用多个级别的块和选择器/函数。