为什么UIScrollView没有弹跳?

Pio*_*otr 0 iphone uiscrollview ios

我这样做:

    scrollView = [[UIScrollView alloc] initWithFrame:self.bounds];
    [self addSubview:scrollView];

    NSInteger x = scrollView.bounds.origin.x + Padding, y = scrollView.bounds.origin.y + Padding;

    backButton = [[AButtonControl alloc] initWithCaption:@"Back" style:AButtonViewStyleGreen];
    backButton.frame = CGRectMake(x, y, backButton.frame.size.width, backButton.frame.size.height);
    y += backButton.frame.size.height + Spacing;
    [scrollView addSubview:backButton];

    ownerNameTextField = [[AFormTextField alloc] initWithFrame:CGRectMake(x, y, 200, 60) label:@"Guest name"];
    y += ownerNameTextField.frame.size.height + Spacing;
    [scrollView addSubview:ownerNameTextField];

    guestListSelectField = [[AFormSelectField alloc] initWithFrame:CGRectMake(x, y, 200, 60) label:@"Guest list"];
    y += guestListSelectField.frame.size.height + Spacing;
    [scrollView addSubview:guestListSelectField];

    referenceUserSelectField = [[AFormSelectField alloc] initWithFrame:CGRectMake(x, y, 200, 60) label:@"Reference user"];
    y += referenceUserSelectField.frame.size.height;

    [scrollView addSubview:referenceUserSelectField];

    scrollView.contentSize = CGSizeMake(self.bounds.size.width, y + Padding);
Run Code Online (Sandbox Code Playgroud)

它滚动得很好,但是视图不像它应该(?)那样反弹.

有任何想法吗?

Pio*_*otr 7

这里的根本问题是,如果你在-layoutSubviews设置了滚动的帧/边界,它不检查,如果你将其设置为帧/边界,它已经拥有了,这抵消了反弹.解决方案是做类似的事情

CGFrame scrollFrame = [self calculateFrameForScrollView];
if (!CGRectEqualToRect(scrollFrame, self.myScrollView.frame)) 
    self.myScrollView.frame = scrollFrame;
Run Code Online (Sandbox Code Playgroud)

发现于:UIScrollView及其子类如果嵌套在自定义UIView中则不会反弹