UIWebView scrollTo应该表现得很流畅

时间:2011-08-09 18:17:29

标签: javascript iphone html uiwebview webview

我不知道我是否在问题标题中正确询问,但在这里我将简要介绍

我有一个UIWebView并基于div加载内容,每个div在loadRequest上都有唯一的id。 好像我的内容太大,所以当你点击“阅读更多”时,我会分成几块并加载剩余的内容

此'Read More'事件在autoscroll上触发,我通过javascript处理。所以一旦该事件被触发,它只是通过使用window.location.href = div1 + div2(它只是一个例子)附加数据(我有另一种方法)。

现在主要的问题是当我滚动下载和wherver我得到'Read More'消息并且它自动触发然后它将数据添加到当前div并显示(User感觉它是继续读取)但是当

我向上滚动 它表现得很好,因为它只是将数据附加到div并滚动到setYScroll(updatedlocation);

updatedlocation用于在我们将内容添加到div时,它应滚动到用户所在的相同位置。

所以让我们从一个例子开始,假设我正在阅读div2,当我滚动向上'Read More'事件被触发并将div1添加到div2然后调用web视图委托shouldStartLoadWithRequest。

所以每次当你向上滚动时它都会将内容更新为div2,但首先它会占用我之前的div1位置,然后将我带到我当前正在阅读的div2位置。 所以它感觉真的很受欢迎,突然它带我到某个地方一段时间带我到第二个摩擦中的当前位置

我试过这个解决方案, 我想拍摄屏幕截图并使用当前UIWebView的截图图像创建一个imageView,并在“Read More”事件发生时进行webview。完成Web视图加载后,删除imageView并显示webview。 但这种情况正在以同样的方式发生,问题是webview委托下发生的每件事情都是如此。我仍然无法弄清楚发生了什么?这个问题的解决方案是我正确的轨道,或者是否有更好的解决方案

3 个答案:

答案 0 :(得分:1)

我有类似的情况。我所做的是彼此之上有两个UIWebViews。当需要更新一个视图时,我抓住滚动位置,在隐藏的UIWebView中加载新数据,当另一个UIWebView完成加载其数据时,它将其滚动位置设置为第一个webview的当前滚动位置,然后隐藏第一个webview并取消隐藏。 它非常无缝,效果很好。

答案 1 :(得分:0)

我怀疑你经历的“跳跃”取决于网页视图被完全重绘的事实(我们都知道UIWebView很慢)。

所以,我看到两个选项:

  1. 通过Ajax在javascript中完全实现“阅读更多”机制;

  2. 而不是使用loadRequest将数据加载到视图中,为该网址创建NSConnection,然后通过在其中注入您从NSConnection获取的HTML来更新网络视图通过stringByEvaluatingJavaScriptFromString

  3. 第二个选项可能更好,因为它完全基于SDK,但你会很容易看到它比第一个选项复杂得多。他们俩会工作,我很确定会给你一种顺利的行为。

答案 2 :(得分:0)

如果我正确理解你的问题,听起来你正试图实现自己对“无限滚动”概念的处理。

查看已经存在的one of the many infinite scroll libraries可能值得您花些时间。如果一个人完全不符合您的要求,您可能会找到解决现有问题所需的灵感。