UIWebView class referenceはUIScrollViewの中のUIWebViewを埋め込む思いとどまら:
重要:あなたは UIScrollViewのオブジェクトでのUIWebViewかのUITableViewオブジェクトを埋め込むべきではありません。その場合、2つのオブジェクトのタッチイベントが混在し、誤って が処理される可能性があるため、予期しない動作は になる可能性があります。
私はあなたがまだあなたの機能を実装したいとししかし;-)
アイデア1:にDOMを変更する、代わりのUIWebViewのstringByEvaluatingJavaScriptFromString:
メソッドを使用してJavaScriptを実行し、UIScrollViewの中のUIWebViewを埋め込みません以下のツールバーを追加してください。必要に応じて、いくつかのカスタムURLスキームを登録して、ツールバーにプッシュされたボタンからコールバックのobjective-cコードを呼び出すことができます。
アイデア2:UIWebViewをUIScrollViewに埋め込むのではなく、通常のUIViewに埋め込みます。 Vigneshの提案に基づいて、コールバックが呼び出されるたびにcontentOffset
とcontentSize
の高さを確認して、デリゲートを介してwebViewの内部scrollViewのscrollViewDidScroll:
コールバックを待ち受けます。それらが等しくなると、あなたが一番下にいることを意味します。これが発生すると、ツールバーのフレームをアニメートして、含まれているUIViewを「入力」し、WebViewのフレームを「押し込む」ことができます。
アイデア3:Appleの推奨事項を無視して、UIWebViewをUIScrollViewに埋め込みます。 Vigneshの提案に基づいて、コールバックが呼び出されるたびにcontentOffset
とcontentSize
の高さを確認して、デリゲートを介してwebViewの内部scrollViewのscrollViewDidScroll:
コールバックを待ち受けます。それらが等しくなると、あなたが一番下にいることを意味します。これが起こると、webViewのuserInteractionEnabled
プロパティをNOに設定し、webViewとツールバーを含むscrollViewでYESに設定します。うまくいけば、スクロールは十分にスムーズに続くでしょう。もちろん、userInteractionEnabled
をいつスイッチバックするかを決定するのと同じ方法で、スクロールビューを含む声を聞く必要があります。
このアイデアのバリエーションは、webViewの場合はuserInteractionEnabled
をNOに設定するだけですが、webViewのフレームの高さをcontentSizeに合わせて設定し、それに応じてscrollViewのcontentSizeをそれに応じて拡大します。
どちらのバリエーションでも、リンクをクリックするなどの操作を行うことができない場合があるという欠点があります.-(しかし、おそらくそれはあなたのケースには十分です。少なくとも最初のバリエーションではそれほど悪くありません。