2012-06-24 64 views
3

我有一個UIScrollView填充子視圖,創建它並初始填充時,一切都很好。UIScrollView addSubview或更改框架後不需要的滾動

但是,當我添加一個位於可視屏幕部分之外的新子視圖,或者當我調整也在可見屏幕部分之外的現有子視圖時,會有一個隨後的0.3s長滾動動畫(我可以看到它發生在我的委託中),它似乎與新添加/調整大小的元素相匹配。

嘗試:

  • pagingEnabled總是NO。
  • 在子視圖操作期間將scrollEnabled設置爲NO沒有幫助。
  • 做一個setContentOffset:animated:在子視圖操作後沒有阻止動畫。
  • 一個單一的巨人子視圖與我所有的子視圖都沒有幫助。

我目前的解決方法是先設置爲適合可見屏幕部分內,或做其他調整內上海華工作的框架,但感覺骯髒,而不會處理所有的情況......

有沒有辦法來防止這種自動滾動動畫時,以編程方式操作子視圖?

Xcode 4.3,iOS SDK for 5.1。

回答

2

我也發現了這個問題,並發現這種解決方案http://www.iphonedevsdk.com/forum/iphone-sdk-development/94288-disabling-uiscrollview-autoscroll.html

它涉及到繼承的UIScrollView,並在下面的方法進入無碼。

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated { 

} 

就像這個人在鏈接上說的,我發現它的工作,並沒有問題到目前爲止。希望對你有效。

+0

它的工作原理,謝謝!有趣的是,我看到那個頁面,但是當我看到他們在談論尋呼時停止了閱讀,這在我的情況下不適用;應該繼續閱讀! :-P – squelart

+1

在該方法中設置斷點,我看到以下調用堆棧:(我的子視圖操作方法) - > UIView addSubview -...-> UITextView didMoveToSuperview - > UITextView webViewDidChange: - > UITextView scrollRectToVisibleInContainingScrollView - > NoAutoScrollUIScrollView scrollRectToVisible :動畫:。所以它看起來像UITextView強制滾動它的UIScrollView容器。上述技巧可能會停止工作一天,如果蘋果改變了這種方式,但它現在應該做的... – squelart

+0

@squelart說得好! –

2

我有這個問題,因爲我在添加子視圖之前設置滾動視圖的內容大小。

只要我更改代碼,以便在添加子視圖後設置滾動視圖的內容大小,問題就消失了。