Javascript UIWebView scrollTo应运行平稳
我不知道我问的题目是否正确,但这里我将简要描述一下 我有一个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视图被完全重绘的事实(我们都知道,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
速度很慢)
因此,我看到两种选择:
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文件本身。如果您不清楚我的评论,请告诉我,我知道没有代码很难理解