UIScrollView 每次访问视图都会改变滚动位置

Posted

技术标签:

【中文标题】UIScrollView 每次访问视图都会改变滚动位置【英文标题】:UIScrollView change scroll position every visit of the view 【发布时间】:2012-04-27 13:50:27 【问题描述】:

我有一个带有 UIView 的 UIViewController,在视图中我有一个 UIScrollView,我以这种方式初始化了 UIViewController:

if (!self.detailViewController) 
    self.detailViewController = [[[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil] autorelease];

当我进入视图时,UIScrollView 在顶部滚动,如果我返回 MasterView,然后我再次进入 DetailView,视图将滚动到某个位置,如果我返回,然后我再次返回视图,视图在底部的另一个位置滚动,再次滚动,每次我进入时,UIScrollView 每次都会在底部滚动一点,所以我的问题是为什么?...我怎么能每次我进入视图时都设置为顶部?

我试过这个:

[self.myScrollView scrollRectToVisible:CGRectMake(0, 0, self.myScrollView.frame.size.width, self.myScrollView.frame.size.height) animated:NO];

在 viewWillAppear 方法中但不更改任何内容,所以我将它放在 viewDidAppear 方法中,当我进入时我看到它返回到顶部,所以我的问题是如何将 uiscrollview 设置为始终显示在顶部?

【问题讨论】:

【参考方案1】:

试试[self.myScrollView scrollRectToVisible:CGRectMake(0, 0, 10, 10) animated:NO];

【讨论】:

随着视图中的那一行出现,以这种方式工作:我第一次进入一如既往地在顶部,返回重新进入并且它有点滚动到底部,返回重新进入并它在顶部,并重复这个循环,所以向前迈了一步,首先在底部滚动更多,并且越来越多......但这并不完美......其他想法? :( 我猜这取决于它向下滚动的程度,您可能想尝试CGRectMake(0, 0, 1, 1) 确认 viewWillAppear 确实被调用了吗?

以上是关于UIScrollView 每次访问视图都会改变滚动位置的主要内容,如果未能解决你的问题,请参考以下文章

在无限 UIScrollView 中跨页面拖动视图

UIScrollView setContentOffset:(0,0) 改变视图?

当 UIScrollView 内容改变时更新 UITableView

iOS:setContentSize 导致我的整个 UIScrollView 框架跳跃

UIScrollView做了Scroll

自动布局正在改变 UIScrollView 的 contentOffset 旋转