UIWebView отключить масштабирование, когда scalePageToFit включен - PullRequest
18 голосов
/ 30 января 2012

Есть ли способ отключить масштабирование, когда включена страница Масштабирование по размеру? *

Ответы [ 6 ]

63 голосов
/ 29 февраля 2012

Это работает для меня:

UIScrollView *scrollView = [webView.subviews objectAtIndex:0];
scrollView.delegate = self;//self must be UIScrollViewDelegate

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
  return nil;
}

ОБНОВЛЕНИЕ: Для iOS 5 или выше получить scrollView, как это:

webview.scrollView.delegate = self;
12 голосов
/ 01 ноября 2012

Вместо использования

UIScrollView *scrollView = [webView.subviews objectAtIndex:0];
scrollView.delegate = self;//self must be UIScrollViewDelegate

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return nil;
}

Вы можете использовать это:

webview.scrollView.delegate = self;

-(UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView {
return nil;
}

Второй вариант лучше и полностью защищен.Первая логика может потерпеть неудачу в будущих SDK.

4 голосов
/ 30 января 2012

Есть свойство с именем scrollView в UIWebView. Через это вы можете определить это. Чтобы быть более конкретным, это должно выглядеть так:

myWebView.scrollView.minimumZoomScale = 1.0;
myWebView.scrollView.maximumZoomScale = 1.0;
3 голосов
/ 30 января 2012

Редактировать: Реализовать метод делегата

- (void)webViewDidFinishLoad:(UIWebView *)webView

Для вашего веб-представления и добавить в него следующий код:

[webView stringByEvaluatingJavaScriptFromString: @"$('body').bind('touchmove', function(event) { event.preventDefault() });"];

Проблема заключается в том, что эта функция также отключает прокрутку, поскольку она отключаетдвижение прикосновения.Если вы хотите сохранить прокрутку, вы должны написать java-скрипт, который перезапишет метатег viewport с помощью:

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
3 голосов
/ 30 января 2012

Из документации Apple :

scalePageToFit

Логическое значение, определяющее, масштабируется ли веб-страница, чтобы соответствовать размеру представления ипользователь может изменить масштаб.

@ свойство (неатомное) BOOL scalePageToFit

Обсуждение

Если ДА, веб-страница имеет видмасштабируется, чтобы соответствовать, и пользователь может увеличивать и уменьшать масштаб.Если НЕТ, пользовательское масштабирование отключено.Значением по умолчанию является NO.

Поэтому, если вы хотите изменить это поведение, вам, вероятно, придется создать подкласс UIWebView.

0 голосов
/ 21 января 2017

так у меня работает:

NSString *fullURL = @"http://google.com";
NSURL *url = [NSURL URLWithString:fullURL];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
_webView.scrollView.scrollEnabled = TRUE;
_webView.contentMode = UIViewContentModeScaleAspectFit;
_webView.scalesPageToFit = FALSE;
[_webView loadRequest:requestObj];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...