Ios 在视图之间切换时,UIScrollview跳出屏幕

Ios 在视图之间切换时,UIScrollview跳出屏幕,ios,uitableview,uiscrollview,Ios,Uitableview,Uiscrollview,我有一个标签栏应用程序,第一个标签上有滚动条视图,第二个标签上有其他一些东西。滚动效果非常好,但如果我向下滚动,然后切换到第二个选项卡,然后再返回,滚动视图会跳得太高,以至于整个画面都超出了画面范围,我可以向上滚动,并返回到顶部的一半。如果我回到第二个选项卡,然后再回到滚动视图的选项卡,它会很好地回到它的位置,但每次我第一次运行应用程序时切换,它都会飞离屏幕很远 所以我添加了一个我认为可以解决我的问题的方法,它看起来是这样的:@property(nonatomic)float lastScrol

我有一个标签栏应用程序,第一个标签上有滚动条视图,第二个标签上有其他一些东西。滚动效果非常好,但如果我向下滚动,然后切换到第二个选项卡,然后再返回,滚动视图会跳得太高,以至于整个画面都超出了画面范围,我可以向上滚动,并返回到顶部的一半。如果我回到第二个选项卡,然后再回到滚动视图的选项卡,它会很好地回到它的位置,但每次我第一次运行应用程序时切换,它都会飞离屏幕很远

所以我添加了一个我认为可以解决我的问题的方法,它看起来是这样的:
@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);

我对这段代码很有信心,但有些地方可能出错了。。。任何帮助都将不胜感激。thx:)

即使您有一个很长的列表,这也是您设置contentsize的原因。这个巨大的底部插图毫无意义,因为它超出了你的屏幕尺寸。高度

如果f.i.视图与scrollView重叠,则需要提供一个包含重叠视图高度的contentInset(仅举一个示例)


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

为什么在scrollview上有巨大的底部插图?哇,真尴尬。。。我找到了解决我问题的办法。我只需要用self.scroll关掉self.content。忘了我是这么叫的@Kyle Truscott我有一个很长的列表,这就是为什么它会下降这么多。