Як я можу ввімкнути масштаб на UIWebView, який знаходиться всередині UIScrollView?


132

У мене є елемент, UIWebViewякий знаходиться всередині UIScrollView(прокрутка містить інший компонент)

Я намагався ввімкнути мультитач як на Interface Builder, так і на Programmatic увімкнено, UIWebViewале він все ще не може збільшити масштаб для html, мені потрібно обробляти і збільшення масштабу в UIScrollViewі UIWebView? Або нічого, що я не встановив?


2
scalesPageToFit = YESвін працює, але він змінює розмір вмісту за замовчуванням. Подивіться на мою відповідь, це допоможе вам.
iPatel

Відповіді:


348

Ви ОБОВ'ЯЗКОВО встановите scalesPageToFit = ТАК для будь-якого защемлення та збільшення масштабу для роботи на UIWebView


2
Це добре, за винятком випадків, коли мою сторінку зменшують, щоб вона вмістилась у перегляді. Я створюю сторінку HTML в коді для відображення, і я хочу, щоб вона залишалася в попередньому розмірі, але дозволяю моїм користувачам збільшувати її з дрібним масштабуванням
Dan F

33
Додайте наступний метатег до голови вашого документа HTML: <meta name = 'viewport' content = 'початкова шкала = 1.0, максимальна шкала = 10.0' />
vocaro

2
Як я можу зробити те ж саме із зовнішнім веб-сайтом? Тобто я встановлюю початковий масштаб, і після цього ввімкнено масштабування користувача.
Вільям Йокуш

Привіт, все працює в режимі "Пейджинг", "Збільшити / зменшити" тощо. Але в мене є одна проблема. Мій додаток працює в обох напрямках (Портрет і Пейзаж). Тепер, в портреті, я повинен провести сторінку 2-3 рази, тоді я можу перейти до наступної сторінки. Але в ландшафті це чудово працює. Я переглядаю веб-перегляд всередині scrollview і scrollview мають підкачку. Але коли я спробував провести прокрутку, щоб перейти до наступної сторінки, тоді я повинен провести її 2 - 3 рази, щоб перейти до наступної сторінки (в портретному режимі). Будь-яка ідея щодо того ж. Дякую за допомогу.
Нішант Б

ідеальна відповідь ... Спасибі
AL̲̳I

12

Гаразд, вам потрібно зробити як вище, так і наступне. У мене в основному було перегляд веб-сторінок, і це не спрацювало.

  1. Як зазначено вище, спочатку потрібно поставити UIScrollView в основний вигляд, а потім розмістити веб-перегляд у вікні прокрутки.
  2. Як зазначено вище, реалізуйте <UIScrollViewDelegate>у своєму контролері перегляду, перетягніть делегат виду прокрутки до контролера подання в Інтерфейс Builder та застосуйте viewForZoomingInScrollViewметод. Це повинно повернути вказівник на UIScrollView (повернути myScrollView).
  3. Я створив властивості IBOutlet як для веб-перегляду, так і для прокрутки - прив’яжіть їх у NIB до контролера перегляду.
  4. У вікні прокрутки перейдіть до інспектора атрибутів, встановіть ваші коефіцієнти максимального та мінімального масштабування (я встановив від 0,5 до 5,0, що добре працює).
  5. У веб-перегляді в Інспекторі атрибутів:
  6. У розділі «Перегляд веб-сторінок» виберіть «Масштабні сторінки для відповідності»
  7. У розділі «Вид» виберіть для режиму «Вгорі ліворуч»
  8. У розділі "Перегляд" внизу виберіть "Включена взаємодія користувачів" та "Увімкнено багаторазовий дотик"

3

За допомогою JavaScript ви можете контролювати рівень масштабування, хоча знайдене мною рішення не виглядає рівним.

Скажіть, у вас є <head>:

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

Щоб збільшити масштаб до 4х разів і все ж дозволити користувачеві змінити масштаб, змініть вміст двічі:

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

Переміщення ширини дуже важливо - інакше Mobile Safari має серйозні помилки перефарбовування (через надмірну оптимізацію).

Ви не можете просто встановити initial-scaleзнову - це ігнорується вдруге.


2

Потрібно реалізувати метод viewForZoomingInScrollView у своєму контролері, або масштабування нічого не призведе. (Я насправді не знаю, для чого це потрібно, але все одно.)

Детальну інформацію див . У розділі http://developer.apple.com/iphone/library/documentation/WindowsViews/Conceptual/UIScrollView_pg/ZoomZoom/ZoomZoom.html .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.