2011-08-09 4 views
9

を振る舞う必要がありますon loadRequest 私のコンテンツは大きすぎるので、私は細かく分割し、「続きを読む」をタップすると残りのコンテンツを読み込みます。のUIWebView scrollToは、私がのUIWebViewを持っており、コンテンツをロードするdiv要素に基づいて、それぞれのdiv要素が一意のIDを持っている私は質問のタイトルに正しく依頼された場合、私は知りませんが、ここで私は簡単な</p> <p>に説明しようと思ってスムーズ

この「Read More」イベントは、私がjavascriptで処理している自動スクロールで発生します。そのイベントが発生すると、window.location.href = div1 + div2(その一例)を使用してデータを追加します(別の方法があります)。

I scrollDownとi「は続きを読む」というメッセージとその自動火災を取得wherver、それは現在のdivやショーにデータを追加する(ユーザーがそのANは続きを読む感じる)が、

今、主な問題です

私は上に向かってスクロールします divにデータを追加してsetYScroll(updatedlocation)にスクロールするだけなので、うまく動作します。

updatedlocationは、divにコンテンツを追加するときに使用され、ユーザーがいたのと同じ位置にスクロールする必要があります。

はそう、例から始め、現在私はDIV2を読んでいると仮定し、私はまでをスクロールしたときに「続きを読む」ことができますイベントは、解雇とDIV2にDIV1を追加しshouldStartLoadWithRequestというWebビューのデリゲート。

あなたがスクロールしているときにdiv2のコンテンツを更新するたびに、最初にdiv1の前の場所に移動してから、現在読んでいたdiv2の場所に移動します。 は、それは私がスクリーンショットを取ると考え本当にweiredのように、突然、それはしばらくの間、どこかに私を取り、私はこのソリューションをしようとした二

、 の摩擦の中に私の現在の位置に私を取る感じ、ImageViewのを作成します現在のUIWebViewのスクリーンショットイメージと一緒に、 'Read More'イベントが起こっているときにwebviewに置いてください。 Webビューの読み込みが完了したら、imageViewを削除してwebviewを表示します。 これは同じように起こっていますが、問題はWebviewデリゲートの下で起こっていることです。私はまだ何が起こっているか把握できませんでしたか?この問題の解決策は正しいtrackjであるかそれ以上の解決策がありますか

+0

ユーザーが「もっと読む」をタップすると、コンテンツをどのように読み込みますか?あなたは 'loadHtmlString'を呼び出しますか?もしそうなら、 'stringByEvaluatingJavaScriptFromString:' –

+0

によって新しいコンテンツを渡そうとするべきです。loadRequestオブジェクトを使って呼び出すことはできません。 WebView delgateでチェックしています if([NSString *] [components objectAtIndex:1] isEqualToString:@ "readMore"]){activityIndi​​catorView.hidden = TRUE; [activityIndi​​catorView stopAnimating];} –

答えて

0

あなたが経験する「ジャンプ」は、Webビューが完全に再描画されていると考えられます(そして、私たちはすべてUIWebViewがスロー)。

だから、私は2つのオプションを参照してください。

  1. は、Ajaxを用いてJavaScriptで完全に「続きを読む」仕組みを実装します。その後、loadRequestを使用してビューへの代わりにデータをロードするの

  2. 、そのURLにNSConnectionを作り、その中にあなたがNSConnectionからstringByEvaluatingJavaScriptFromStringを通じて得たHTMLを注入することによって、Web表示を更新します。

2番目のオプションは、完全にSDKベースであるため、より良いかもしれませんが、最初のオプションよりはるかに複雑であることがすぐわかります。それらの2つはうまくいくでしょうし、あなたが後にしているような滑らかな振る舞いをあなたに与えることは間違いありません。

+0

ご迷惑をおかけして申し訳ありません。私は言ったように、1つのオプションは、私は私の質問に記載されている、javascriptを介してすでに実装されています。 2オプション、私は任意のWebサーバーへのリクエストをしていない、私のすべてのhtmlファイルは私のプロジェクトディレクトリにあり、何かの真ん中にある場合は、 'それ以上の'ボタンがスクロールしながら来るjavascriptのメソッドとデータを追加し、私のWebビューのdelegate shouldStartLoadWithRequestを呼び出します。私のjavascriptはhtmlファイル自体に挿入されています。私のコメントがあなたにはっきりしない場合は、私に知らせてください、私はコードなしで理解することは本当に難しいことを知っています –

0

あなたの質問が正しく理解されている場合は、「無限スクロール」の概念を自分で処理しようとしているようです。

すでに外にあるone of the many infinite scroll librariesをチェックする価値があります。あなたの要件を完全に満たしていない場合は、あなたが今持っているものを修正するために必要なインスピレーションを見つけるかもしれません。

+0

あなたのリンクが壊れている... – Eric

1

私は同様の状況があります。私がしているのは、お互いの上に2つのUIWebViewを持つことです。 1つのビューを更新するときは、スクロール位置を取得し、非表示のUIWebViewに新しいデータをロードします。他のUIWebViewのデータロードが完了すると、そのスクロール位置が最初のWebviewの現在のスクロール位置に設定され、最初のwebviewとunhides自体。 かなりシームレスで、とてもうまく機能します。

関連する問題