滚动到顶部时,UIScrollView不会垂直弹跳

时间:2011-05-10 17:41:54

标签: iphone objective-c uiwebview uiscrollview bounce

我有一个奇怪的问题,其中包含UIScrollViewUIWebView。 首先是我的设置:

我将UIView子类化,并将以下代码添加到其中:


·H

@interface MySubclassedView : UIView {
    UIScrollView *scrollView;
    UIWebView *contentView;
}

@property(nonatomic,retain) UIWebView *contentView;

的.m

- (id)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
        [self setupContentView];
    }
    return self;
}

setupContentView

-(void)setupContentView {

    // Content View
    self.contentView = [[UIWebView alloc] init];
    self.contentView.backgroundColor = [UIColor whiteColor];

    // ScrollView
    scrollView = [[UIScrollView alloc] init];
    scrollView.backgroundColor = [UIColor whiteColor];
    scrollView.alwaysBounceVertical = YES;
    [scrollView addSubview:self.contentView];
    [self addSubview:scrollView];
}

和我的layoutSubViews

- (void)layoutSubviews {
    XLog(""); // something like NSLog
    [super layoutSubviews];
    scrollView.frame = CGRectMake(0,0, self.width, self.height);
    self.contentView.frame = CGRectMake(0,0, self.width, self.height);
}

所有这一切的问题是,当我的滚动视图没有完全滚动到顶部时,它会第一次反弹。滚动视图滚动到顶部或底部后,我无法向下拖动视图,但只要我拖动就会调用layoutSubviews方法。

为了更好地理解,我制作了一个短视频来演示行为:http://www.screenr.com/Gy9

感谢所有帮助。如果不清楚,请在评论中告诉我。

1 个答案:

答案 0 :(得分:2)

我真的很抱歉我没有更多帮助,但是:

  

重要提示:你不应该嵌入   UIWebView或UITableView对象   UIScrollView对象。如果你这样做,   可能导致意外行为,因为   两个对象的触摸事件可以   混淆和错误处理。

从:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/Reference/Reference.html

并不意味着没有办法让它发挥作用。但可能意味着你想要限制你用力撞击墙壁试图让它发挥作用的时间。

也就是说,只要将userInteractionEnabled设置为NO,我就已成功在UIScrollViews中嵌入了UIWebViews。