2010-02-08 10 views
129

mam UIWebView który wewnątrz UIScrollView (Scrollview zawierać inny składnik)Jak włączyć powiększanie w interfejsie UIWebView w programie UIScrollView?

Próbowałem włączyć multitouch zarówno na konstruktora Interface lub Programowej na UIWebView ale nadal nie można powiększyć do html, muszę obsłużyć oba powiększać przy UIScrollView i UIWebView? Albo czegokolwiek, czego nie mam ustawić?

+2

'scalesPageToFit = YES' to działa, ale zmienia domyślny rozmiar treści, [Spójrz na moją odpowiedź to będzie dla ciebie pomocne.] (Http: // stackoverflow.com/questions/7134576/enable-zooming-pinch-on-uiwebview/23971234 # 23971234) – iPatel

Odpowiedz

332

należy ustawić scalesPageToFit = TAK dla każdego szczypanie i powiększanie do pracy na UIWebView

+2

To dobrze, z wyjątkiem tego, że moja strona jest pomniejszana, aby zmieścić się w widoku. Tworzę stronę html w kodzie do wyświetlenia i chcę, aby pozostała w poprzednim rozmiarze, ale pozwól moim użytkownikom na powiększanie za pomocą powiększania szczyptą. –

+32

Dodaj następujący metatag do nagłówka dokumentu HTML: vocaro

+2

Jak mogę zrobić to samo z zewnętrzną stroną internetową? Oznacza to, że ustawiam początkowy zoom, a powiększanie użytkownika jest włączone po tym. –

12

OK, trzeba zrobić zarówno powyżej, ale również, co następuje. W widoku głównym miałem widok sieciowy, a to nie działało.

  1. Jak wyżej, najpierw musisz umieścić UIScrollView w głównym widoku, a następnie umieścić widok WWW w widoku przewijania.
  2. Jak wyżej, zaimplementuj <UIScrollViewDelegate> w kontrolerze widoku, przeciągnij delegata widoku przewijania do kontrolera widoku w Konstruktorze interfejsów i zastosuj metodę viewForZoomingInScrollView. To musi zwrócić wskaźnik do UIScrollView (return myScrollView).
  3. Właściwości IBOutlet zostały utworzone zarówno dla widoku WWW, jak i widoku przewijania - połącz je z NIB z kontrolerem widoku.
  4. W widoku przewijania przejdź do Inspektora atrybutów, ustaw współczynniki przybliżenia maksymalnego i minimalnego (ustawię od 0,5 do 5,0, co działa dobrze).
  5. na stronie Zobacz, w Inspektorze atrybuty:
  6. W sekcji Web widoku wybierz Wagi stron do rozmiaru
  7. W sekcji Widok wybierz dla trybu, "Top Left"
  8. W sekcji View na dole zaznacz Włączoną interakcję użytkownika i Włącz wiele dotykowy
3

Za pomocą JavaScript możesz kontrolować poziom powiększenia, mimo że znalezione przeze mnie rozwiązanie nie wygląda gładko.

Załóżmy, że masz w <head>:

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

Aby powiększyć do 4x i nadal pozwalają użytkownikowi na zmianę zoomu, zmień zawartość dwukrotnie:

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

Przełączanie szerokość jest bardzo ważne - inaczej Mobile Safari ma poważne błędy w malowaniu (z powodu nadmiernej optymalizacji).

Nie można ponownie ustawić initial-scale - zostanie ona zignorowana po raz drugi.