J'ai un UIWebView
qui à l'intérieur d'un UIScrollView
(scrollview contient un autre composant)
J'ai essayé d'activer le multitouch à la fois sur Interface Builder ou programmatique sur UIWebView
mais il ne peut toujours pas zoomer pour le langage HTML. Dois-je gérer les deux zooms en même UIScrollView
et UIWebView
? Ou tout ce que je n'ai pas à régler?
Vous DEVEZ définir scalesPageToFit = YES pour que le pincement et le zoom fonctionnent sur UIWebView.
OK, vous devez faire les deux choses ci-dessus, mais aussi les suivantes. J'avais une vue Web dans la vue principale et cela ne fonctionnait pas.
<UIScrollViewDelegate>
dans votre contrôleur de vue, faites glisser le délégué de vue de défilement vers le contrôleur de vue dans Interface Builder et implémentez la méthode viewForZoomingInScrollView
. Cela doit renvoyer le pointeur sur UIScrollView (renvoyer myScrollView).Avec JavaScript, vous pouvez contrôler le niveau de zoom, bien que la solution que j'ai trouvée ne soit pas lisse.
Disons que vous avez en <head>
:
<meta id="vp" name="viewport" content="width=768,initial-scale=1.0">
Pour effectuer un zoom sur 4x, tout en permettant à l'utilisateur de modifier le zoom, modifiez le contenu deux fois:
var vp = document.getElementById('vp');
vp.content = "width=767,minimum-scale=4.0,maximum-scale=4.0,user-scalable=yes";
vp.content = "width=768,minimum-scale=0.25,maximum-scale=10.0,user-scalable=yes";
Il est très important de changer la largeur - sinon Mobile Safari aurait de sérieux problèmes de repeinte (dus à une suroptimisation).
Vous ne pouvez pas simplement définir initial-scale
_ encore une fois - il est ignoré la deuxième fois.
Vous devez implémenter la méthode viewForZoomingInScrollView dans votre contrôleur, sinon le zoom ne fera rien. (Je ne sais pas vraiment pourquoi cela devrait être nécessaire, mais voilà.)
Pour des informations détaillées, voir http://developer.Apple.com/iphone/library/documentation/WindowsViews/Conceptual/UIScrollView_pg/ZoomZoom/ZoomZoom.html .