2016-08-23 45 views
0

在tvOS:addCoordinatedAnimations動畫塊不上的Xcode 7.3.1,我用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.

這個hackery使用if tempDidAnimate == false確實解決了這個問題,但我不明白爲什麼會出現問題。

任何想法可能是錯的?

一個想法:我已經在堆棧中的addCoordinatedAnimations塊...我不這麼認爲,但堆棧很複雜......看不到任何方式來檢查通過代碼。

+0

你在哪裏添加這個?自定義焦點動畫應該添加到'didUpdateFocusInContext',它具有'coordinator'參數,它不是可選的。 – beyowulf

+0

我從didUpdateFocusInContext開始,然後深入到塊和選擇器/函數的幾個級別。 –

回答

0

tl; dr:是我已經在一個動畫塊#$ &^@#$!

好的,結果發現,在我的「巧妙」重構代碼中,我忘了我正在調用動畫塊來重置任何當前活動的自動佈局動畫(通過請求持續時間爲0的新動畫)。然後在那個完成中,我上面的代碼被稱爲...因爲我已經正式在動畫塊中,所以OS拒絕執行上面的主動畫塊,並跳到完成。不知道這個操作系統行爲是否記錄在任何地方。

相關問題