我将不胜感激任何帮助。我四处看看,看到我可以使用contentOffset.y
来解决这个问题,但没有具体的方法可以使用它。
我有一个UIViewController
,UITextView
占据了整个屏幕。 UITextView
由一个很长的.txt文件填充。 (想想书长)当用户返回到该视图时,如何找到textView的最后滚动位置,保存并将视图打开到同一位置?我猜想保存位置需要NSUserDefaults
吗?
我见过用于:
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
和
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
并将代码放入:
viewWillDisappear OR viewDidDisappear
和
viewWillAppear
但似乎没有任何事情可以解决我的情况。
请帮助noobie!
最新编辑:
这是最新的迭代。在评论中,我描述了当前情况,只要没有其他滚动,textview将保持在同一位置。例如,我运行应用程序,滚动位置是,例如{0,30281.5}。在不滚动任何内容的情况下,我导航到应用程序的不同部分,然后返回到滚动视图。它在现场{0,30281.5},正好在我离开它的地方。我关闭应用程序,再次运行它,同样的事情{0,30281.5}。但是如果我从那里滚动,那么当我离开页面时会记下新的滚动位置,并在我回到页面时再次注意到。它们都被记录为相同的新位置,但是文本视图不在我离开它的位置附近。我希望我解释了这一点。感谢任何看过这个的人!
@property (nonatomic, assign) CGPoint positionY;
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
[_readerTextView setContentOffset:self.positionY];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
_positionY = CGPointFromString([defaults objectForKey:@"savePosition"]);
_readerTextView.contentOffset = _positionY;
NSLog(@"OFFSET LOCATION IS NOW: %@", NSStringFromCGPoint(_positionY));
}];
}
-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
_positionY = _readerTextView.contentOffset;
self.readerTextView.contentOffset = CGPointZero;
[_readerTextView setContentOffset:self.positionY];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:NSStringFromCGPoint(_positionY) forKey:@"savePosition"];
[defaults synchronize];
NSLog(@"OFFSET LOCATION IS: %@", NSStringFromCGPoint(_positionY));
}