3

我有一个选项卡栏应用程序,第一个选项卡中有一个滚动视图,第二个选项卡中有一些其他内容。滚动工作得非常好,但是如果我向下滚动然后切换到第二个选项卡然后再返回,滚动视图会跳得如此之高以至于整个事情都超出了框架,我可以大麦向上滚动并回到一半最佳。如果我返回到第二个选项卡,然后再次返回到带有滚动视图的选项卡,它就会回到原来的位置就好了,但是每次我第一次运行应用程序时,它都会飞离屏幕很远。

所以我添加了一个我认为可以解决我的问题的方法,它看起来像这样:@property (nonatomic) float lastScrollHeight;

@synthesize lastScrollHeight = _lastScrollHeight;

-(float)lastScrollHeight{
    if(!_lastScrollHeight) _lastScrollHeight = 0;
    return _lastScrollHeight;
}



 -(void)viewDidLayoutSubviews{
    [super viewDidLayoutSubviews];
    [self.scroll setContentOffset:CGPointMake(0.0f, self.lastScrollHeight) animated:NO];
}

-(void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    self.lastScrollHeight = self.scroll.bounds.origin.y;
    [self resetApplesBrokenScrollview];
}

-(void)resetApplesBrokenScrollview{
    [self.scroll setContentOffset:CGPointZero];
    CGRect sFrame = self.scroll.bounds;
    sFrame.origin = CGPointZero;
    self.content.bounds = sFrame;
    CGRect cFrame = self.scroll.frame;
    cFrame.origin = CGPointZero;
    self.content.frame = cFrame;
}

在 viewDidLoad 方法内部:

[super viewDidLoad];
[scroll setScrollEnabled:YES];
[scroll setContentSize:CGSizeMake(320, 1900)];
scroll.contentInset=UIEdgeInsetsMake(0.0,0.0,1919.0,0.0);

而且我对这段代码非常有信心,但有些地方是错误的......任何帮助将不胜感激。谢谢 :)

4

1 回答 1

1

即使您的列表很长,这也是您设置内容大小的原因。这个巨大的底部插图没有任何意义,因为它超出了您的 screenSize.height。

如果您有一个与您的 scrollView 重叠的视图,那么您需要提供一个 contentInset 与您的重叠视图的高度(只是一个示例)。

您的 scrollView 框架应该是您希望内容滚动的大小。 contentSize 是内容需要/需要的实际大小。

于 2014-04-17T10:34:32.813 回答