Je dois montrer un article Web avec un UITableView
sous l'article.
La seule option que j'ai trouvée était d'afficher l'article dans un UIWebView
dans l'en-tête tableView.
Pour ce faire, je dois obtenir la hauteur du contenu webView et je dois désactiver le défilement pour la webView.
J'ai trouvé deux solutions pour désactiver le défilement:
for (id subview in webView.subviews)
if ([[subview class] isSubclassOfClass: [UIScrollView class]])
((UIScrollView *)subview).scrollEnabled=NO;
ou en JavaScript:
<script type="text/javascript">
touchMove = function(event) {
event.preventDefault();
}
J'ai entendu dire que la première solution est interdite par Apple mais je n'en ai aucune preuve. Ma candidature sera-t-elle rejetée en utilisant cette solution? Si oui, puis-je utiliser la deuxième solution sans être rejeté?
webView.scrollView.bounces = NO;
? puisque le code de la première ligne a désactivé le défilement.Puisque cette question est toujours applicable, il y a une nouvelle façon de le faire! (iOS 7.0+, peut-être iOS 6 également, non confirmé)
Prends soin de toi :)
la source
Vous pouvez simplement définir la propriété d'interaction utilisateur de la vue Web sur no ie
C'est assez simple et fonctionne bien, merci :)
la source
pour toutes les versions ios, vous pouvez utiliser ce code au lieu de setScrollEnabled:
la source
Utilisez celui-ci
<body ontouchmove="event.preventDefault()">
la source
Version SWIFT 3
la source
Je pense que le Javascript
est de loin la meilleure solution.
En effet :
Votre premier examen, ou le
une (même chose) pourrait être rejetée car non documentée, ou faire planter votre application dans une autre mise à jour iOS.
Et le
La méthode ne fonctionnera pas avec iOS <5.
la source
qui l'a réglé pour moi
la source
Le premier est rejeté par Apple. Cela m'est arrivé ce matin.
la source
[[myWebView scrollView] setBounces: NO];
la source
Je ne pense pas que la première option soit interdite par Apple.
Tu pourrais essayer
Si vous ne souhaitez pas que les liens fonctionnent dans votre UIWebView, vous pouvez également faire
la source
Utilise le :
la source
Essaye ça,
la source
J'ai placé quelques
UIWebView
s dans unUIScrollView
et il ne défilait pas pour moi, à moins que je ne désactive l'interaction de l'utilisateur sur les vues Web (même avec le[[webview scrollview] setScrollEnabled:NO]
). J'ai donc placé lesUIWebView
s dans unUIView
et cela a fonctionné pour moi, mais les liens interactifs ou les divs dans mon HTML à l'intérieur duUIWebView
ne fonctionnaient plus.La seule chose qui a fonctionné pour moi est de garder l'
UIWebView
intérieurUIScrollView
afin que les interactions HTML fonctionnent maisUIScrolling
pas.J'ai ensuite créé un délégué personnalisé pour les vues Web à écouter,
window.open("http:/customEvent")
qui est appelée à partir du HTML contenu dans la vue Web. J'ai également ajouté une détection de balayage JavaScript qui déclenchera mon événement personnalisé.Lorsque le délégué de la vue Web reçoit cela, je transmets une notification à un contrôleur qui fait ensuite défiler dynamiquement mon fichier
UIScrollView
. De toute évidence, j'ai dû construire une logique pour surveiller et faire défiler jusqu'à la page suivante ou précédente. Pas la plus jolie solution mais ça marche pour moi.la source
Essayez ceci dans votre HTML (
<HEAD>
balise)Cela désactivera le défilement sur votre page Web.
(fonctionne sur n'importe quelle page Web, pas seulement UIWebView)
la source
J'avais besoin de désactiver le défilement car le fait de rejeter un clavier personnalisé gênait vraiment le défilement avec le webView. Rien d'autre n'a fonctionné et j'ai eu recours à quelque chose comme ça:
la source
Une UIWebview et une UITableView sur une UIScrollview et la définition de la hauteur de la vue Web (et l'ajout au ContentSize total de la Scrollview) correspondent-elles à ce que vous voulez?
la source
la source