Подтвердить что ты не робот

UIWebView отключает масштабирование при масштабированииPageToFit включен

Есть ли способ отключить масштабирование, когда страница Scales для Fit включена?

4b9b3361

Ответ 1

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

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

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

UPDATE: для iOS 5 или выше получите scrollView следующим образом:

webview.scrollView.delegate = self;

Ответ 2

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

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.

Ответ 3

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

myWebView.scrollView.minimumZoomScale = 1.0;
myWebView.scrollView.maximumZoomScale = 1.0;

Ответ 4

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

scalesPageToFit

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

@property (неатомные) BOOL scalesPageToFit

Обсуждение

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

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

Ответ 5

Изменить: Реализация метода делегата

- (void)webViewDidFinishLoad:(UIWebView *)webView

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

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

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

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">

Ответ 6

поэтому он работает на меня:

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