Comment puis-je activer le zoom sur UIWebView à l'intérieur de UIScrollView?

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é.

  1. Comme ci-dessus, vous devez d'abord mettre un UIScrollView dans la vue principale, puis mettre la vue web dans la vue déroulante.
  2. Comme ci-dessus, implémentez <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).
  3. J'ai créé les propriétés IBOutlet à la fois pour la vue Web et la vue de défilement – les lier dans la NIB à votre controller de vue.
  4. Dans la vue défilement, allez dans l'inspecteur d'attributes, définissez vos facteurs de zoom Max et Min (je définis 0,5 à 5,0, cela fonctionne bien).
  5. Dans la vue Web, dans l'inspecteur des attributes:
  6. Dans la section Web View, select Scales Pages To Fit
  7. Dans la section Afficher, select pour Mode, "En haut à gauche"
  8. Dans la section Vue en bas, cochez la case Interaction user activée, et touche multiple activé

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.