UIWebViewをTable Viewセルに配置し、スクロールバーを維持するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/443333

  •  22-07-2019
  •  | 
  •  

質問

UIWebViewをテーブルビューセルに配置しながら、UIWebViewのスクロールバーを維持するにはどうすればよいですか?私のテーブルビューには複数のセルとヘッダーフレームもあり、行が多いためスクロール可能にする必要があります。

UITextViewを使用するとテキストは完璧に表示され、スクローラーも表示されますが、問題はコンテンツがリッチテキストであるため、UIWebViewでコンテンツを表示する以外のオプションがないことです。アイデア、ハッキング?

役に立ちましたか?

解決

Appleがそれについて何かしなければ、これは機能しません。 UITableViewとUIWebViewはどちらもスクローラーをサポートしており、互いに矛盾しています。 UITableViewスクローラーは優先されるため、スクロール操作が実行されるたびに、UIWebViewではなくUITableViewにアクションが送信されます。

何らかの理由で、UITableViewでUITextViewを使用すると、両方でスクローラーが機能します。

他のヒント

UIWebViewをテーブルセルに追加する際の問題は、これらのオブジェクトが両方ともスクロール可能(tableviewとwebview)であるため、適切に使用しないと合併症を引き起こすことです。テーブルビューには、uiwebview以外のセルがありますか?スクロール可能なTableViewが必要ですか?テーブルビューをスクロール可能にする必要がない場合は、Webビューでスクロールを有効にし、テーブルビューでは無効にします。動作するはずです。

ただし、テキストを表示するだけの場合は、UITextViewを使用しないでください(UITextViewでも同じ問題に直面しますが)?

UIWebViewのドキュメントでこれを見つけました:

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

UIWebViewにコンテンツを配置すると、スクロールバーが自動的に追加されます。必ず[ページを拡大縮小する]のチェックを外してください。 Interface Builderで表示されるため、ページは表示時に再スケーリングされません。

UIWebViewは、UIViewの高さを超えるコンテンツがある場合、自動的にスクロールバーを表示します。

UISCrollViewの canCancelTouchEvents プロパティを NO に設定することにより、UIWebViewをUIScrollViewに配置し、両方をスクロール可能にすることができます。フリックするだけで、UIScrollViewがスクロールします。指を短押ししてからフリックを開始すると、UIWebViewがスクロールします。

このクイックハックを試して、Webビューにスクロールインジケーターを強制的に表示できるかどうかを確認してください。 ((UIScrollView *)[webView.subViews objectAtIndex:0])。showsVerticalScrollIndicator = YES;

より徹底的なアプローチは、セルの内容を要約と詳細に分割することです。各セルに要約を表示しますが、詳細は表示しません。セルを選択したら、新しい画面を使用して、選択したセルの内容全体を表示します。これにより、スクロール可能なビュー内にスクロール可能なビューがあるというユーザビリティの問題が完全に回避されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top