如何记住UIWebView的滚动位置

Rya*_*yan 2 iphone xcode objective-c uiwebview ios

在Safari中,当你

  1. 访问一个很长的页面,例如w3c.org,向下滚动到页面中的某个位置
  2. 杀死Safari
  3. 再次打开Safari,它会自动记住您在页面中的最后位置

怎么做UIWebView?或者有可能吗?

谢谢.

Mic*_*lum 10

我能想到的最简单的方法是保存Web视图contentOffset.y,然后将其设置回下次加载时保存的内容.

将其保存为NSUserDefaults即使应用程序被终止,或者即使安装了更新,也可以恢复该值.

[[NSUserDefaults standardUserDefaults] setFloat:myWebView.scrollView.contentOffset.y forKey:@"offsetKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
Run Code Online (Sandbox Code Playgroud)

然后恢复:

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    [myWebView.scrollView setContentOffset:CGPointMake(0, [[NSUserDefaults standardUserDefaults] floatForKey:@"offsetKey"]) animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

^^未经测试,让我知道它对你有用.

  • 在尝试此操作之前,请确保等到内容完全加载(webView委托). (2认同)