开发者

UIWebView scrollTo should behave smoothly

I do not know if i asked correctly in Question Title, but here i am going to describe in brief

I have an UIWebView and loading the content based on div and each div has unique id on loadRequest. As though my content was too large so i break down into pieces and loading the remaining content once you tap on 'Read More'

This 'Read More' event fire on autoscroll which i am handling through javascript. so once that event is fired it just append data (for which i have another method) by using window.location.href = div1+div2(its just an example).

Now the main problem is when i scrollDown and wherver i get the 'Read More' message and it auto fire then it adds the data to the current div and show (User feel its an continue reading) but when

I scroll towards to up It behaves weired because it just append the data to the div and scroll to setYScroll(updatedlocation);

updatedlocation is used for when we are adding the content to the div and it should scroll to the same position where the user was.

so lets start with an example, assume currently i am reading the div2 and when i scroll up'Read More' events fired and add div1 to div2 and then web view delegate shouldStartLoadWithRequest called.

so every time its update the content to div2 when you are scrolling up but first it takes me the previous s location of div1 and then take me to div2 location where i was currently reading. so it feel like really weired, suddenly it takes me to somewhere for a while and take me to my current position within friction of second

I tried with this solution, I thought to take the screen shot and create an imageView with that screenshot image of the current UIWebView and put on webview whenever 'Read More' event is happening. once the web view loading is done remove the imageView and display the webview. but this is happening in the same way, the problem is every thing is happening under the webview delegate. i still could 开发者_Python百科not figure out whats happening? The solution of this problem am i on right trackj or is there any better solution for that


I have a similar situation. What I do is have two UIWebViews on top of each other. When it is time to update one view, I grab the scroll position, load the new data in the hidden UIWebView, when the other UIWebView is done loading its data it sets its scroll position to the current scroll position of the first webview, then hides the first webview and unhides itself. Its pretty seamless and works very well.


I suspect that the "jump" you experience depends on the fact that the web view is fully redrawn (and we all know that UIWebView is slow).

So, I see 2 options:

  1. implement the "Read more" mechanics fully in javascript by means of Ajax;

  2. instead of loading data into the view using loadRequest, make a NSConnection to that url and then update the web view by injecting in it the HTML you got from NSConnection through stringByEvaluatingJavaScriptFromString.

The second option is possibly nicer because it is fully SDK based, but you will readily see that it is far more complex than the first one. The two of them will work and I am pretty sure that will give you the kind of smooth behavior you are after.


If I understand your question correctly it sounds like you're trying to implement your own handling of the "infinite scroll" concept.

It might be worth your while to check out one of the many infinite scroll libraries that are already out there. If one doesn't fit your requirements perfectly you might find the inspiration you need to fix the one you have now.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜