2014-07-15 41 views
1

我已經看到了其他一些帖子,並試圖實現他們的建議,但我仍然有同樣的問題。我有一個UIScrollView包含一個UIContentView,它又包含各種標籤和一個UIWebView。內容滾動得夠好,但屏幕太長(按設計 - 這就是爲什麼我使用滾動視圖)。當我的手指滑到屏幕的頂部時,我需要放開手指並將其移動到底部以繼續滾動。我放開屏幕的瞬間,內容會立即跳回頂部,從而否定我所做的滾動。這使得無法看到更多的信息。UIScrollView總是彈回

我知道我的UIContentView的高度大於最後一個對象的最大y值。我用一些NSLog語句驗證了這一點,以打印出最後一個y值是什麼。我還有什麼可能會失蹤?我做了很多其他的UIScrollView工作,所以我不知道我在這裏忽略了什麼。

謝謝!

- (void) viewDidLayoutSubviews 
{ 
    [super viewDidLayoutSubviews]; 
    [self.scrollView layoutIfNeeded]; 
    self.scrollView.contentSize = self.contentView.bounds.size; 
} 

enter image description here

回答

1

你不應該做的是在viewDidLayoutSubviews。假設contentView具有固定的大小,並沒有被autoresized或自動佈局發生變化,那麼你可以把線

self.scrollView.contentSize = self.contentView.bounds.size; 

viewDidLoad方法。

layoutIfNeeded行沒有用處,應該刪除。

+0

謝謝,但這是行不通的。只要我將該行移入'viewDidLoad',我就完全失去了所有的滾動功能。視圖根本不會移動。 – Alex

+1

我對這些東西的調試策略是在屏幕上放置一個按鈕,並且NSLog「scrollView.frame」,「scrollView.contentSize」和「contentView.frame」響應按鈕按下。這應該告訴你你需要知道的一切,並保證所有的佈局代碼都有機會在尺寸打印之前完成。 – user3386109

+0

好主意。謝謝! – Alex