如何始终使UIScrollView可滚动?

时间:2012-02-25 17:34:55

标签: objective-c ios cocoa-touch uiscrollview

我有UIScrollViewscrollview.contentSize设置为UIScrollView中所有子视图的高度。当contentSize的高度大于UIScrollView的高度时,拖动视图时完全滚动。当contentSize的高度小于UIScrollView的高度时,拖动视图时不会发生任何事情。

我认为这是标准行为,因为实际上没有什么可滚动的。但我想,UIScrollView无论如何都在移动。

一个可能的解决方案是确保contentSize的高度永远不会小于frame.height加上一个小的边距(即5px):

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];

是否有一种不那么强硬的方法呢?

2 个答案:

答案 0 :(得分: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:

enter image description here

答案 1 :(得分:1)

迅速:

scrollView.alwaysBounceVertical = true
scrollView.alwaysBounceHorizontal = true