Javascript UIWebView scrollTo应运行平稳

Javascript UIWebView scrollTo应运行平稳,javascript,iphone,html,uiwebview,webview,Javascript,Iphone,Html,Uiwebview,Webview,我不知道我问的题目是否正确,但这里我将简要描述一下 我有一个UIWebView,并基于div加载内容,每个div在loadRequest上都有唯一的id。 好像我的内容太大了,所以当你点击“阅读更多”时,我会将其分成几部分并加载剩余的内容 我正在通过javascript处理autoscroll上的“ReadMore”事件。因此,一旦触发该事件,它只需使用window.location.href=div1+div2(这只是一个示例)附加数据(我有另一个方法) 现在主要的问题是当我向下滚动时,当服务

我不知道我问的题目是否正确,但这里我将简要描述一下

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

我正在通过javascript处理autoscroll上的“ReadMore”事件。因此,一旦触发该事件,它只需使用window.location.href=div1+div2(这只是一个示例)附加数据(我有另一个方法)

现在主要的问题是当我向下滚动时,当服务器收到“readmore”消息时,它会自动触发,然后它会将数据添加到当前div并显示(用户感觉这是一个继续读取),但是当

我向上滚动 它的行为异常,因为它只是将数据附加到div并滚动到setYScroll(updatedlocation)

updatedlocation用于将内容添加到div时,它应该滚动到用户所在的位置

因此,让我们从一个示例开始,假设当前我正在读取div2,当我向上滚动时,将触发“读取更多”事件,并将div1添加到div2,然后web视图委托应以调用请求的方式加载

所以每次你向上滚动时,它都会将内容更新到div2,但首先它会带我到div1之前的位置,然后带我到我当前正在阅读的div2位置。 所以它感觉非常奇怪,突然它把我带到某个地方一段时间,带我到我现在的位置,在第二秒的摩擦中

我尝试过这个解决方案, 我想拍摄屏幕截图,用当前UIWebView的屏幕截图创建一个imageView,并在“阅读更多”事件发生时显示在webview上。web视图加载完成后,移除imageView并显示web视图。 但这是以同样的方式发生的,问题是webview委托下的每件事都在发生。我还是不知道发生了什么?这个问题的解决方案是我在正确的轨道上,还是有更好的解决方案?

我怀疑您体验到的“跳跃”取决于web视图被完全重绘的事实(我们都知道,
UIWebView
速度很慢)

因此,我看到两种选择:

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

  • 不要使用
    loadRequest
    将数据加载到视图中,而是将
    NSConnection
    连接到该url,然后通过
    stringByEvaluatingJavaScriptFromString
    将从
    NSConnection
    获得的HTML注入web视图,从而更新web视图


  • 第二个选项可能更好,因为它完全基于SDK,但您很容易看到它比第一个选项复杂得多。这两种方法都会奏效,我很确定这会让你获得你想要的那种平滑的行为。

    如果我正确理解你的问题,听起来你好像在尝试实现你自己对“无限卷轴”概念的处理


    也许值得你去看看那些已经存在的东西。如果其中一个不完全符合您的要求,您可能会找到解决现有问题所需的灵感。

    我也有类似的情况。我要做的是让两个UIWebView相互重叠。当需要更新一个视图时,我获取滚动位置,在隐藏的UIWebView中加载新数据,当另一个UIWebView加载完其数据时,它会将其滚动位置设置为第一个webview的当前滚动位置,然后隐藏第一个webview并取消隐藏。
    它非常无缝,工作非常好

    当用户点击“阅读更多”时,如何加载内容?您是否调用
    加载HTMLSTRING
    ?如果这样做,您应该尝试通过
    stringByEvaluatingJavaScriptFromString:
    No i call using loadRequest对象传递新内容。在webview delgate中,我正在检查([(NSString*)[components objectAtIndex:1]IsequalString:@“readMore”]){activityIndicatorView.hidden=TRUE;[activityIndicatorView Stop Animating];}很抱歉响应太晚。正如我所说,我已经通过javascript实现了1个选项,我在问题中描述了这一点。2选项,我不向任何web服务器发出任何请求,我所有的html文件都在我的项目目录中,每当用户滚动时,如果在滚动过程中出现“阅读更多”按钮,则调用javascript方法并附加数据,调用我的web视图委托shouldLoadWithRequest。我的javascript被注入html文件本身。如果您不清楚我的评论,请告诉我,我知道没有代码很难理解