2010-02-08 11 views
129

Ho un UIWebView che all'interno di un UIScrollView (ScrollView contiene un altro componente)Come posso abilitare lo zoom su UIWebView che all'interno di UIScrollView?

ho cercato di abilitare il multitouch sia sul Interface Builder o programmatico su UIWebView ma ancora non può zoomare per html, ho bisogno di gestire entrambi ingrandiscono allo UIScrollView e allo UIWebView? O tutto ciò che non devo impostare?

+2

'scalesPageToFit = YES' funziona ma modifica la dimensione del contenuto predefinito, [Guarda la mia risposta ciò sarà utile per te.] (Http: // stackoverflow.it/questions/7134576/enable-zooming-pinch-on-uiwebview/23971234 # 23971234) – iPatel

risposta

332

è necessario impostare scalesPageToFit = YES per qualsiasi pizzicotti e lo zoom per lavorare su un UIWebView

+2

Questo è buono, tranne che ora la mia pagina viene ridimensionata per adattarsi alla vista. Sto creando una pagina html nel codice da visualizzare e voglio che rimanga alla dimensione precedente, ma consenta ai miei utenti di ingrandire con lo zoom pizzico –

+32

Aggiungi il seguente metatag al titolo del documento HTML: vocaro

+2

Come posso fare la stessa cosa con un sito Web esterno? Cioè, ho impostato lo zoom iniziale e lo zoom dell'utente è abilitato dopo. –

12

OK, è necessario fare entrambe le cose di cui sopra, ma anche quanto segue. Avevo una vista Web nella vista principale e non funzionava.

  1. Come sopra, è necessario inserire un UIScrollView nella vista principale, quindi inserire la visualizzazione Web nella vista di scorrimento.
  2. Come sopra, attuare <UIScrollViewDelegate> nel controller di visualizzazione, trascinare la vista di scorrimento delegato sul controller di visualizzazione in Interface Builder e implementare il metodo viewForZoomingInScrollView. Questo deve restituire il puntatore a UIScrollView (restituire myScrollView).
  3. Ho creato le proprietà di IBOutlet sia per la visualizzazione Web che per la vista di scorrimento: collegale nella NIB al controller di visualizzazione.
  4. Nella vista di scorrimento, andare su Impostazioni Attributi, impostare i fattori di zoom Max e Min (ho impostato da 0,5 a 5,0, che funziona bene).
  5. sul Web Vedi, in Impostazioni Attributi:
  6. Nella sezione Web View, selezionare bilance pagine al formato
  7. Nella sezione Visualizza, selezionare per la modalità, "In alto a sinistra"
  8. Nella sezione View in basso, spuntare Interazione utente abilitata e Tocco multiplo abilitato
3

Con JavaScript è possibile controllare il livello di zoom, anche se la soluzione oly che ho trovato non sembra liscia.

Diciamo che avete in <head>:

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

Per eseguire lo zoom a 4x, e ancora permettono all'utente di cambiare lo zoom, modificare il contenuto di due volte:

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

Commutazione la larghezza è molto importante - in caso contrario, Mobile Safari presenta seri bug di ridipintura (a causa dell'eccessiva ottimizzazione).

Non è possibile impostare nuovamente initial-scale - viene ignorata la seconda volta.

Problemi correlati