UIScrollView不滚动

Dan*_*son 4 uiscrollview uiscrollviewdelegate ios ios7

我有一个根本不滚动的UIScrollView.如果我启用弹跳,我可以向侧面滚动足够远以查看视图外部有内容,但是当我释放时它会快速回到原点.我打开了分页,但如果我将其关闭,我会得到相同的行为.我关闭了自动布局.在IB中,scrollView位于MainViewController中,正确链接到IBOutlet,如下所示.

@interface MainViewController ()

@property (strong, nonatomic) IBOutlet UIScrollView *scrollView;

@end

@implementation MainViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    for (int i = 0; i < 3; i++) {
        CGRect frame;
        frame.origin.x = self.scrollView.frame.size.width * i;
        frame.origin.y = 0;
        frame.size = self.scrollView.frame.size;

        // I might be doing this wrong, but it returns a PosterView object just like I want it to.
        NSArray *view = [[NSBundle mainBundle] loadNibNamed:@"posterView" owner:self options:nil];
        [[view objectAtIndex:0] setFrame:frame];

        [self.scrollView addSubview:[view objectAtIndex:0]];
    }

    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * 3, self.scrollView.frame.size.height);
}
Run Code Online (Sandbox Code Playgroud)

如果我使用这种方法,它会正确滚动.

-(void)scrollToPage:(NSInteger)page{
    float pageWidth = [self.scrollView frame].size.width;
    [self.scrollView setContentOffset:CGPointMake(page*pageWidth,0) animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试实现UIScrollViewDelegate和覆盖scrollViewDidScroll,但它永远不会被调用(除非我启用弹跳,就像我之前提到的那样).

Zen*_*Zen 8

UIScrollView仅在具有contentSize大于其帧大小的情况下滚动.如果它不滚动可能意味着它contentSize不够大.所以contentSize在设置它之后检查它是什么.

如果contentSize是你想要的那样,那么检查scrollView是否是scrollEnabled.有时启用反弹会产生滚动效果的印象.此外,如果未启用滚动,则contentOffset在该情况下也设置工作,因为它会根据提供的大小作为参数移动内容.