2011-06-15 63 views
0

我这样做:为什么UIScrollView不弹起?

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

它滚动罚款,但认为不反弹像它应该(?)。

任何想法?

+0

? '[scrollView setBounces:YES];' – deanWombourne 2011-06-15 11:05:13

+0

你试过'scrollView.alwaysBounceVertical = YES;'? – 2011-06-15 11:05:22

回答

7

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

CGFrame scrollFrame = [self calculateFrameForScrollView]; 
if (!CGRectEqualToRect(scrollFrame, self.myScrollView.frame)) 
    self.myScrollView.frame = scrollFrame; 

在这里找到:在颤动启用UIScrollView and its subclasses won't bounce if nested in custom UIView

+1

谢谢你。它也帮助我解决了我的问题。注意:iOS 5似乎解决了这个问题,所以如果你看到iOS 5和更早版本的区别,这就是为什么。 – awolf 2011-07-28 23:14:16

相关问题