UIWebview не будет масштабироваться даже после установки scalePageToFit в YES - PullRequest
8 голосов
/ 28 февраля 2010

У меня есть UIWebview, который загружается как подпредставление, когда пользователь выбирает вкладку на UISegmentedControl. Почему-то не могу заставить его разрешить pinch/zooming. Я установил следующий код в методе viewDidLoad:, чтобы он работал.

self.myWebView = [[[UIWebView alloc] initWithFrame:self.view.frame] autorelease];
self.myWebView.backgroundColor = [UIColor whiteColor];
self.myWebView.scalesPageToFit = YES;
self.myWebView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
self.myWebView.delegate = self;
[self.view addSubview: myWebView];

Я попытался загрузить UIWebView из NIB и создать его программно, но безрезультатно. Я что-то упускаю? Что может быть причиной того, что веб-просмотр игнорирует сжатие и масштабирование?

Спасибо!

Ответы [ 7 ]

9 голосов
/ 14 декабря 2010
  [webView stringByEvaluatingJavaScriptFromString:@"document.body.style.zoom = 5.0;"];

кажется подходящим решением

7 голосов
/ 19 января 2011

Я решил это с помощью настройки порта просмотра:

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.5; user-scalable=1"/>

Удачи

6 голосов
/ 28 февраля 2010

Я вижу, вы устанавливаете autoresizingMask. Означает ли это, что вы создали UIWebView с начальным размером CGRectZero? Можете ли вы вообще взаимодействовать с документом? Я имею в виду, прокрутка / постукивание работает?

5 голосов
/ 19 апреля 2011

По моему опыту, вам нужно установить scalePageToFit перед загрузкой UIWebView. Это означает установку перед viewDidLoad и т. Д. То, что я делаю, это устанавливаю в "shouldStartLoadWithRequest"

- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    //make sure that the page scales when it is loaded :-)
    theWebView.scalesPageToFit = YES;
    return YES;
}

Моя интерпретация документации заключается в том, что свойство scalePageToFit определяет способ загрузки страницы. Это не меняет вещи после факта.

Надеюсь, это поможет.

2 голосов
/ 27 апреля 2011

FYI:

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.5; user-scalable=1"/>

работает, но

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.5; user-scalable=YES"/>

не на iPhone. В документации сказано использовать да / нет. Я думаю, дело имеет значение в этом случае. В obj-c значения YES / NO и 1/0

1 голос
/ 23 мая 2011

Это то, что Apple предлагает в справочнике по классу веб-просмотра.

Внимание! Не следует встраивать объекты UIWebView или UITableView в объекты UIScrollView. В этом случае может возникнуть непредвиденное поведение, поскольку события касания для двух объектов могут быть смешаны и неправильно обработаны.

1 голос
/ 10 октября 2010

Вы должны включить мультитач. Щепотка затрагивает более одного пальца на экране:

[myWebView setMultipleTouchEnabled:YES]

...