2010-02-08 5 views
129

Tengo un UIWebView, que dentro de un UIScrollView (ScrollView contiene otro componente)¿Cómo puedo activar el zoom en UIWebView que dentro de UIScrollView?

Me trataron de permitir multitouch tanto en Interface Builder o programático en UIWebView pero todavía no se puede hacer zoom para html, ¿necesito para manejar ambos acercan el zoom al UIScrollView y UIWebView? ¿O algo que no tenga que establecer?

+2

'scalesPageToFit = YES' funciona, pero cambia el tamaño del contenido predeterminado, [Mira mi respuesta, esto será útil para ti.] (Http: // stackoverflow.com/questions/7134576/enable-zooming-piz-on-uiwebview/23971234 # 23971234) – iPatel

Respuesta

332

debe establecer scalesPageToFit = SÍ para cualquier pellizcar y zoom para trabajar en un UIWebView

+2

Esto es bueno, excepto que ahora mi página se está reduciendo para que quepa en la vista. Estoy creando una página html en el código para mostrar, y quiero que se mantenga en el tamaño anterior, pero permitir a mis usuarios acercar con el zoom pellizcar –

+32

Agregue la siguiente metaetiqueta a la cabeza de su documento HTML: vocaro

+2

¿Cómo puedo hacer lo mismo con un sitio web externo? Es decir, establezco el zoom inicial, y el zoom del usuario se habilita después de eso. –

12

bien, que tiene que hacer tanto el anterior, pero también lo siguiente. Tenía una vista web en la vista principal, y eso no funcionó.

  1. Como anteriormente, primero tiene que poner un UIScrollView en la vista principal, luego colocar la vista web en la vista de desplazamiento.
  2. Como se indicó anteriormente, implemente <UIScrollViewDelegate> en su controlador de vista, arrastre el delegado de vista de desplazamiento al controlador de vista en el Creador de interfaz e implemente el método viewForZoomingInScrollView. Esto debe devolver el puntero a UIScrollView (return myScrollView).
  3. Creé las propiedades de IBOutlet tanto para la vista web como para la vista de desplazamiento - vincúlelas en la NIB a su controlador de visualización.
  4. En la vista de desplazamiento, vaya al Inspector de atributos, establezca sus factores de zoom máximo y mínimo (configuro 0.5 a 5.0, que funciona bien).
  5. En la Web, en el Atributos Inspector:
  6. En la sección Web Ver, seleccione Escalas Páginas para encajar
  7. En la sección Ver, seleccionar el modo "Arriba a la izquierda"
  8. En la sección Vista en la parte inferior, marque Interacción del usuario habilitada y Múltiple toque habilitado
3

Con JavaScript puede controlar el nivel de zoom, aunque la última solución que he encontrado no se ve sin problemas.

Digamos que tienes en <head>:

<meta id="vp" name="viewport" content="width=768,initial-scale=1.0"> 

Para acercar a 4x, y todavía permiten al usuario cambiar el zoom, cambiar el contenido dos veces:

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"; 

Alternar la anchura es muy importante - de lo contrario, Mobile Safari presenta errores graves de repintado (debido a una optimización excesiva).

No puede volver a configurar initial-scale - se ignora por segunda vez.

Cuestiones relacionadas