Как включить включение UIWebView в UIScrollView?

У меня есть UIWebView, который внутри a UIScrollView (scrollview содержит другой компонент)

Я попытался включить multitouch как в Конструктор интерфейсов, так и Programmatic на UIWebView, но он по-прежнему не может масштабировать для html, мне нужно обрабатывать как масштаб, так и UIScrollView и UIWebView? Или что-то, что мне не нужно устанавливать?

Ответ 1

Вы ДОЛЖНЫ установить scalesPageToFit = YES для любого ущемления и масштабирования для работы с UIWebView

Ответ 2

ОК, вам нужно сделать и выше, но и следующее. У меня был веб-вид в главном представлении, и это не сработало.

  • Как указано выше, сначала нужно поместить UIScrollView в основное представление, а затем поместить веб-представление в прокрутку.
  • Как и выше, реализуйте <UIScrollViewDelegate> в своем контроллере просмотра, перетащите делегат представления прокрутки в контроллер представления в Interface Builder и внедрите метод viewForZoomingInScrollView. Это должно вернуть указатель на UIScrollView (вернуть myScrollView).
  • Я создал свойства IBOutlet как для веб-представления, так и для прокрутки - привяжите их в NIB к контроллеру представления.
  • В представлении прокрутки перейдите к инспектору атрибутов, установите коэффициенты масштабирования Max и Min (я установил от 0,5 до 5,0, что хорошо работает).
  • В представлении "Интернет" в Инспекторе атрибутов:
  • В разделе "Веб-просмотр" выберите "Масштабировать страницы для соответствия"
  • В разделе "Вид" выберите "Режим", "Вверху слева"
  • В разделе "Вид" внизу снимите флажок "Взаимодействие с пользователем" и "Включено множественное касание"

Ответ 4

С JavaScript вы можете управлять уровнем масштабирования, хотя решение oly, которое я нашел, выглядит негласно.

Скажите, что у вас есть <head>:

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

Чтобы увеличить изображение до 4x и позволить пользователю изменять масштаб, дважды измените содержание:

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 снова - он игнорируется второй раз.