2009-01-14 9 views
0

Comment puis-je placer un UIWebView dans une cellule de table, tout en conservant les barres de défilement de UIWebView? Ma vue de table a aussi plusieurs cellules et un cadre d'en-tête, et j'ai besoin d'être scrollable car il y a beaucoup de lignes.Comment placer une UIWebView dans une cellule de vue de tableau et maintenir ses barres de défilement?

Le texte s'affiche parfaitement lorsque j'utilise UITextView et il affiche également des scrollers, mais le problème est que mon contenu est un texte riche, donc je n'ai pas d'autre choix que d'afficher le contenu dans UIWebView. Des idées, des hacks?

Répondre

3

À moins que Apple ne fasse quelque chose à ce sujet, cela ne peut pas fonctionner. Les deux UITableView et UIWebView soutiennent les défileurs, et ils se contredisent. Les scrollers UITableView prennent la précédence de sorte que 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 curseurs fonctionnent pour les deux.

1

Les barres de défilement sont automatiquement ajoutées lorsque vous placez du contenu dans votre UIWebView. Assurez-vous de décocher "Adapter la page à l'ajustement" dans le Générateur d'interface, afin que la page ne soit pas mise à l'échelle lorsqu'elle est affichée.

1

UIWebView affichera automatiquement les barres de défilement lorsque le contenu dépasse la hauteur de l'UIView.

2

Le problème avec l'ajout de UIWebView dans une cellule de tableau réside dans le fait que ces deux objets sont défilables (tableview et webview) ce qui créera des complications s'il n'est pas utilisé correctement. Est-ce que vous avez une table avec des cellules autres que uiwebview? et avez-vous besoin de la tableview pour être scrollable? Dans le cas où la vue de table n'a pas besoin d'être défilée, faites défiler activé dans le webview et désactivé pour la vue de table. Cela devrait fonctionner.

Mais si vous voulez simplement afficher du texte, pourquoi ne pas utiliser UITextView (bien que vous ayez aussi le même problème avec UITextView)?

1

Vous pouvez placer un UIWebView dans un UIScrollView et faire défiler les deux en définissant la propriété canCancelTouchEvents de UISCrollView sur NO. Si vous venez de feuilleter, l'UIScrollView défilera. Si vous maintenez votre doigt enfoncé pendant une courte période et que vous commencez à flasher, UIWebView défile.

0

Essayez ce bidouillage rapide pour voir si vous pouvez forcer l'affichage 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. Ceci évite complètement le problème d'utilisation d'une vue défilante à l'intérieur d'une vue défilante.

2

Je viens de découvrir cela dans la documentation UIWebView:

« Important: Vous ne devriez pas incorporer des objets UIWebView ou UITableView dans les objets UIScrollView Si vous le faites, un comportement inattendu peut entraîner parce que les événements tactiles pour les deux objets peuvent être. mélangé et mal géré. "

Questions connexes