【问题标题】:How to prevent UIWebView scroll to top when I load a new html string?加载新的 html 字符串时如何防止 UIWebView 滚动到顶部?
【发布时间】:2015-05-02 04:01:46
【问题描述】:

我有一个 html 字符串,我将 html 字符串加载到 UIWebView,用户可以向下滚动 UIWebView。有时我更改了 html 字符串,所以我调用 UIWebView 加载新的 html 字符串。但是当我加载它时,UIWebView 滚动到顶部。新字符串和旧字符串之间的差异可能很小,所以我不知道 UIWebView 滚动到顶部。它应该是用户滚动它的前一个位置。我怎样才能做到这一点 ?

【问题讨论】:

  • uiwebview 的内容已更改并重新加载.. 我看到的解决方案之一是检查 uiwebview 的先前偏移量并存储它.. 当新的 html 字符串加载时滚动您的 web 视图到相同的偏移量..如果您可以将两个html内容之间的差异添加到旧的偏移量中。
  • 搜了很多关于设置contentoffset的问题,好像没用...

标签: html ios uiwebview uiscrollview


【解决方案1】:

uiwebview 的内容已更改并重新加载。我看到的解决方案之一是检查 uiwebview 的先前偏移量并存储它。当新的 html 字符串加载时,将您的 Web 视图滚动到相同的偏移量。 如果你能得到两个 html 内容之间的差异,请尝试将其添加到旧的偏移量。

您可以使用 javascript 来获取偏移量:

int scrollPosition = [[webView stringByEvaluatingJavaScriptFromString:@"window.pageYOffset"] intValue];

还可以使用 :

滚动到新的偏移量
[webView stringByEvaluatingJavaScriptFromString:@"window.scroll(0,newOffset)"];

【讨论】:

  • 我使用 [webView stringByEvaluatingJavaScriptFromString:@"window.scroll(0,newOffset)"];设置内容偏移量。然后我打印出新偏移量。它是正确的。但是 uiwebview 显示在顶部?它没有滚动...
  • 尝试为第一个 webview 的内容制作它。对我来说,我已经测试过了,它工作正常。
  • 您没有使用滚动位置。这是你应该使用的第二行代码: [_contentWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scroll(0,%d)" , scrollPosition]];
猜你喜欢
  • 1970-01-01
  • 2022-01-08
  • 2017-03-21
  • 1970-01-01
  • 2016-07-25
  • 2013-06-16
  • 1970-01-01
  • 1970-01-01
  • 2019-09-30
相关资源
最近更新 更多