J'ai un UIWebView
qui dans un UIScrollView
(scrollview contient un autre composant)
J'ai essayé d'activer multitouch à la fois sur Interface Builder ou Programmatic sur UIWebView
mais il ne peut toujours pas zoomer pour html, dois-je gérer à la fois le zoom sur UIScrollView
et UIWebView
? Ou quelque chose que je n'ai pas à définir?
Vous DEVEZ configurer scalesPageToFit = YES pour que le pincement et le zoom fonctionnent sur un UIWebView
OK, vous devez faire les deux ci-dessus, mais aussi ce qui suit. J'avais une vue Web dans la vue principale, et cela n'a pas fonctionné.
<UIScrollViewDelegate>
dans votre controller de vue, faites glisser le délégué de la vue viewForZoomingInScrollView
vers le controller de vue dans Interface Builder et implémentez la méthode viewForZoomingInScrollView
. Cela doit renvoyer le pointeur sur UIScrollView (return myScrollView). Vous devez implémenter la méthode viewForZoomingInScrollView dans votre controller, ou le zoom ne fera rien. (Je ne sais pas vraiment pourquoi cela devrait être nécessaire, mais voilà)
Pour plus d'informations, consultez http://developer.apple.com/iphone/library/documentation/WindowsViews/Conceptual/UIScrollView_pg/ZoomZoom/ZoomZoom.html .
Avec JavaScript, vous pouvez contrôler le niveau de zoom, bien que la solution oly que j'ai trouvée ne soit pas lisse.
Dites que vous avez dans <head>
:
<meta id="vp" name="viewport" content="width=768,initial-scale=1.0">
Pour zoomer sur 4x, et permettre à l'user de changer de zoom, changez 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";
Le basculement de la largeur est très important – sinon Mobile Safari a de sérieux bogues à repeindre (en raison d'une sur-optimization).
Vous ne pouvez pas initial-scale
: elle est ignorée la deuxième fois.