0

ページネーションをUIScrollview許可する と、UIWebview内部の詳細ビューに があります。Apples Class Reference によると、それを行うべきではないことはわかっていますが、別のオプションはありません。

レスポンスとエクスペリエンスを向上させるために、次のように のスクロールを無効UIWebviewにしました。

[[[webView subviews] lastObject] setScrollEnabled:FALSE];

しかし今、コンテンツに応じて、webview を適切なサイズにするソリューションを探しています。これを行う簡単な方法はありますか? webview の幅は同じままですが、記事全体を表示する必要がある場合に高さが (自動的に) 大きくなりますか? これにより、このシナリオですべてのスクロールを処理する scrollview が座っているため、スクロールの問題が解消されます。

それは理にかなっていますか?

4

2 に答える 2

0

UIWebView のドキュメントから、次のように述べています。

重要: UIWebView または UITableView オブジェクトを UIScrollView オブジェクトに埋め込まないでください。これを行うと、2 つのオブジェクトのタッチ イベントが混同され、誤って処理される可能性があるため、予期しない動作が発生する可能性があります。

より適切なアプローチは、UIWebView を UIViewController に追加し、その下に UIScrollView (または UITableView) を追加することです。特にiPhoneを扱っている場合は、スクロールビュー用に残すスペースの量を意識しています。

それが正しい方向への微調整であることを願っています。

アップデート:

これを調べた後(方法があると確信していました)、UIWebViewをUITableViewのヘッダービューに追加するのが最善の方法だと思われます。

    //create webview
    _webView = [[UIWebView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 280.0)];

    //load request and scale content to fit
    [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.stackoverflow.com/"]]];
    [_webView setScalesPageToFit:YES];

    //add web view to table header view
    [[self tableView] setTableHeaderView:_webview];

これにより、セルが下に表示される前に、テーブル ビューのヘッダーに UIWebView が追加されます。テーブル ヘッダー ビュー (およびフッター ビューも) はセクション ヘッダー (およびフッター) とは異なるため、UITableViewStylePlain を使用している場合でもこれら 2 つを使用できることに注意してください。

下にあるセルが表示されるように、Web ビューのフレームを必ず減衰させてください。そうしないと、タッチが Web ビューによって傍受されるため、ユーザーはテーブルビューをスクロールできなくなります。

これは依然として UIWebView のドキュメント (上記) に反しますが、実際には、Web ビューがビューのスクロール可能な領域全体をカバーしていない限り、この実装は実際には問題なく機能します。

私が作成したテストアプリのスクリーンショットは次のとおりです。ここに画像の説明を入力

それが役立つことを願っています:)

于 2012-05-09T09:23:30.997 に答える
0

これを行うためのより良い方法があります。

iOS 5.0 以降、Apple は UIWebView 内に存在する UIScrollView を公開します。コンテンツに基づいて webview のサイズを変更するには、次のようにします。

  1. UIWebView の親をその UIWebView のデリゲートにします。
  2. webViewDidFinishLoad: を実装し、その関数でこれを行うだけです。

    CGSize sz = [webView.scrollView contentSize]; CGRect rect = webView.frame; rect.size.height = sz.height; webView.frame = rect;

複数の読み込み開始と終了があっても、最終的にはコンテンツに合わせて Web ビューのサイズを変更するので問題ありません。

ユーザーに動的なサイズ変更を表示したくない場合は、webview のアルファを 0 に設定するだけで、すべてがロードされてサイズ変更が完了したら、アニメーションでアルファ 1 に移行できます。

于 2013-04-12T05:37:18.663 に答える