Comment puis-je placer un UIWebView dans une cellule d'affichage de tableau et conserver ses barres de défilement?

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

  •  22-07-2019
  •  | 
  •  

Question

Comment puis-je placer UIWebView dans une cellule de vue sous forme de tableau tout en maintenant les barres de défilement de UIWebView? Ma vue tableau comporte également plusieurs cellules et un cadre d’en-tête, et j’ai besoin qu’elle soit capable de défilement car elle comporte plusieurs lignes.

Le texte s'affiche parfaitement lorsque j'utilise UITextView. Il présente également des défileurs, mais le problème est que mon contenu est en texte enrichi. Par conséquent, je n'ai pas d'autre option que d'afficher le contenu dans UIWebView. Des idées, des astuces?

Était-ce utile?

La solution

À moins que Apple ne fasse quelque chose à ce sujet, cela ne peut pas fonctionner. UITableView et UIWebView prennent en charge les défilement, et ils se contredisent. Les défileurs UITableView ont la priorité. Ainsi, chaque fois qu'une opération de défilement est effectuée, l'action est envoyée à UITableView au lieu de UIWebView.

Pour une raison quelconque, lorsque vous utilisez UITextView avec UITableView, les défilement fonctionnent pour les deux.

Autres conseils

Le problème avec l’ajout de UIWebView dans une cellule de tableau est que ces deux objets sont déplaçables en défilement (tableview et webview), ce qui créera des complications s’ils ne sont pas utilisés correctement. Avez-vous tableview des cellules autres que uiwebview? et avez-vous besoin que la vue table puisse défiler? Si la vue de table n'a pas besoin de défiler, activez le défilement dans la vue Web et désactivez-la pour la vue de table. Cela devrait fonctionner.

Mais si vous voulez seulement afficher du texte, pourquoi ne pas utiliser une UITextView (même si vous rencontrez le même problème pour UITextView)?

Je viens de le trouver dans la documentation de UIWebView:

" Important: Vous ne devez pas incorporer d'objets UIWebView ou UITableView dans des objets UIScrollView. Si vous le faites, un comportement inattendu peut en résulter, car les événements tactiles des deux objets peuvent être mélangés et gérés incorrectement. "

Les barres de défilement sont ajoutées automatiquement lorsque vous insérez du contenu dans votre UIWebView. Veillez à décocher la case "Ajuster la page à l’aide". dans le générateur Interface, afin que la page ne soit pas redimensionnée lors de son affichage.

UIWebView affiche automatiquement les barres de défilement lorsque le contenu dépasse la hauteur de la vue UIV.

Vous pouvez placer un UIWebView dans un UIScrollView et le faire défiler en définissant la propriété canCancelTouchEvents de UISCrollView sur NO . Si vous ne faites que feuilleter, UIScrollView défilera. Si vous maintenez votre doigt enfoncé pendant une courte période, puis que vous commencez à feuilleter, UIWebView défilera.

Essayez cette astuce rapide pour voir si vous pouvez forcer la vue Web à afficher un indicateur de défilement: ((UIScrollView *) [webView.subViews objectAtIndex: 0]). ShowsVerticalScrollIndicator = YES;

L’approche la plus complète consiste à diviser le contenu de votre cellule en un résumé et des détails. Afficher le résumé dans chaque cellule, mais sans détails. Après avoir sélectionné une cellule, utilisez un nouvel écran pour afficher le contenu complet de la cellule sélectionnée. Cela évite complètement le problème de facilité d'utilisation consistant à avoir une vue défilable à l'intérieur d'une vue défilable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top