2012-12-05 47 views
3

我有一個關於UIScrollView的奇怪錯誤。這個視圖工作正常,直到我從窗口中刪除它(間接,它是一個子視圖到一個被刪除的視圖)。UIScrollview contentOffset在從窗口中移除時發生變化

然後我執行一些不相關的動畫;當我把視圖放在那裏的時候,scrollView的contentOffset已經改變了。

我把一個斷點setContentOffset:函數,並得到了下面的堆棧:

#0 -[TestScrollView setContentOffset:] (self=0x915fbd0, _cmd=0x7fb34cd, contentOffset={x = 80, y = -0}) at /Users/../TestScrollView.m:19 
#1 0x008670ea in -[UIScrollView(Static) _adjustContentOffsetIfNecessary]() 
#2 0x0085db55 in -[UIScrollView(UIScrollViewInternal) _stopScrollingNotify:dealloc:pin:]() 
#3 0x0084e6ff in -[UIScrollView _didMoveFromWindow:toWindow:]() 
#4 0x008444bb in -[UIView(Internal) _didMoveFromWindow:toWindow:]() 
#5 0x008444bb in -[UIView(Internal) _didMoveFromWindow:toWindow:]() 
#6 0x008444bb in -[UIView(Internal) _didMoveFromWindow:toWindow:]() 
#7 0x008444bb in -[UIView(Internal) _didMoveFromWindow:toWindow:]() 
#8 0x00840c72 in -[UIView(Hierarchy) _postMovedFromSuperview:]() 
#9 0x0083f4c6 in __UIViewWasRemovedFromSuperview() 
#10 0x0083f141 in -[UIView(Hierarchy) removeFromSuperview]() 
#11 0x00166573 in __98+[App MyAnimationLaunchingMethod]_block_invoke_0 ... 

我看到了其他問題時,滾動型SETFRAME從後到_adjustContentOffsetIfNecessary一個電話改變了自己的contentOffset,例如。 然而,它的大小並沒有改變,它似乎沒有任何意義,它只是從屏幕上取下(稍後放回)。所以沒有理由改變它的偏移量。

這是否有一些解釋?一些方法來防止這種變化?

我可以手動阻止(或恢復)偏移量變化,但是我正在尋找一個「乾淨的」解決方案(如果可用):它是從窗口中刪除的一整組視圖。有時這個特定的scrollView會出現在視圖樹中,通常不會。所以動畫類不應該知道scrollview。

有什麼想法?

在此先感謝

回答

4

類黑客攻擊的,但你可以把一個測試你的setContentOffset:並簡單地返回,如果它已經從它的父刪除。

+0

有點不好意思,但似乎是目前情況下最乾淨的解決方案。謝謝 ! –

相關問題