我有一个Scrollview,它的属性在viewDidAppear中设置。 现在,当我第一次到Scrollview时,没有任何问题。但是我有分配给UINavigationController的按钮。因此当我按下其中一个UINavigationController打开时,当我关闭导航控制器时,ScrollView无法正常恢复。它基本上将屏幕中心对齐为先前按下的按钮位置。因此,如果我尝试向上滚动则不会。
我在viewDidAppear中试过使用它:
scrollView.center = CGPointMake(scrollView.contentOffset.x, scrollView.contentOffset.y);
哪个不太奏效。我怎么解决这个问题?我使用的是iOS6.1
答案 0 :(得分:5)
其实我在这里找到了答案:
我使用的确切代码是:
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
//save the current offset
previousPoint = scrollView.contentOffset;
//set current view to the beginning point
self.scrollView.contentOffset = CGPointZero;
}
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
//retrieve the previous offset
self.scrollView.contentOffset = previousPoint;
}
previousPoint
只不过是在实现上声明的CGPoint变量。
答案 1 :(得分:2)
我之前也遇到过这个问题。 This answer展示了如何克服这个问题。
基本上,您需要在contentOffset
和viewWillAppear:
中正确设置滚动视图的viewDidDisappear:
。
编辑:以下是您可能觉得有用的另一个相关问题,UIScrollview Autolayout Issue。