2012-02-25 71 views
26

我有一個UIScrollViewscrollview.contentSize設置爲UIScrollView中所有子視圖的高度。當contentSize的高度大於UIScrollView的高度時,拖動視圖時它會完全滾動。當我拖動視圖時,當contentSize的高度小於UIScrollView的高度時,沒有任何事情發生。如何始終使UIScrollView可滾動?

我認爲這是標準的行爲,因爲沒有什麼可滾動的。但我想,UIScrollView無論如何正在移動一點。

一個可能的解決方案是確保,該contentSize的高度永遠比frame.height加上小幅度(即5像素)少:

CGSize scrollSize = self.frame.size; 
int defaultHeight = self.frame.size.height + 5; 
int contentHeight = self.webView.frame.origin.y + self.webView.frame.size.height; 
scrollSize.height = MAX(defaultHeight, contentHeight); 
[self.scrollView setContentSize:scrollSize]; 

有沒有少的hackish辦法做到這一點?

+0

你只是希望它的反彈? – jrtc27 2012-02-25 17:36:41

+0

我假設你已經嘗試手動將'scrollEnabled'設置爲'YES',對吧? – dasblinkenlight 2012-02-25 17:39:17

+0

是的,我只是想讓它反彈 - 是的,'scrollEnabled = YES'不起作用。 – dhrm 2012-02-25 18:05:47

回答

71

上有UIScrollView兩個屬性聽起來你想要什麼:

@property(nonatomic) BOOL alwaysBounceVertical; // default NO. if YES and bounces is YES, even if content is smaller than bounds, allow drag vertically 
@property(nonatomic) BOOL alwaysBounceHorizontal; // default NO. if YES and bounces is YES, even if content is smaller than bounds, allow drag horizontally 

只需設置一個或兩個人都要YES,你會得到反彈的效果。

這也可以在IB通過檢查「彈跳平鋪」設置和/或「垂直彈跳」框(S):

enter image description here

+4

請注意,除了「水平反彈」或「垂直反彈」之外,還必須檢查獨奏「反彈」複選框。 – 2016-01-25 00:05:27