Iphone UIWebView在启用scalesPageToFit时禁用缩放

Iphone UIWebView在启用scalesPageToFit时禁用缩放,iphone,uiwebview,Iphone,Uiwebview,当“缩放页面以适应”处于启用状态时,是否有任何方法禁用缩放???在UIWebView中有一个名为scrollView的属性。通过它你可以定义这一点。 更具体地说,它应该如下所示: myWebView.scrollView.minimumZoomScale = 1.0; myWebView.scrollView.maximumZoomScale = 1.0; webview.scrollView.delegate = self; 从: scalesPageToFit 一个布尔值,用于确定网页是

当“缩放页面以适应”处于启用状态时,是否有任何方法禁用缩放???

UIWebView
中有一个名为
scrollView
的属性。通过它你可以定义这一点。 更具体地说,它应该如下所示:

myWebView.scrollView.minimumZoomScale = 1.0;
myWebView.scrollView.maximumZoomScale = 1.0;
webview.scrollView.delegate = self;
从:

scalesPageToFit

一个布尔值,用于确定网页是否缩放以适应视图 用户可以更改比例

@属性(非原子)BOOL scalesPageToFit

讨论

如果是,则网页将按比例缩放,用户可以放大和缩放 出来如果否,则禁用用户缩放。默认值为否

因此,如果要更改该行为,可能必须将UIWebView子类化。

编辑: 实现委托方法

- (void)webViewDidFinishLoad:(UIWebView *)webView
对于您的web视图,并在其中添加以下代码:

[webView stringByEvaluatingJavaScriptFromString: @"$('body').bind('touchmove', function(event) { event.preventDefault() });"];
问题是这也会禁用滚动,因为它会禁用触摸移动。 如果要保持滚动,必须编写java脚本,用以下内容覆盖视口元标记:

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

这对我很有用:

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

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
  return nil;
}
更新:对于iOS 5或更高版本,获取如下滚动视图:

myWebView.scrollView.minimumZoomScale = 1.0;
myWebView.scrollView.maximumZoomScale = 1.0;
webview.scrollView.delegate = self;
而不是使用

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中失败。

因此它在我身上起作用:

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

错误即使您将缩放级别设置为1.0,缩放仍然存在。如果将webView的委托函数放入
-(void)webViewDidFinishLoad:(UIWebView*)webView
,则缩放实际上有效。抱歉,这对我不起作用,即使将其放入webViewDidFinishLoad。如果我使用“webView.scrollView.ZoomCale”而不是1.0,并在“webViewDidFinishLoad”(记住设置web视图委托)中执行此操作,这很有效。。设置最小和最大缩放比例可以让WebView的scrollView知道它可以放大或缩小多少..+1获取此答案。您似乎在写,我正在搜索解决方案,我将编辑一个优秀的解决方案,工作非常完美,并在方法中使用if语句,您可以选择返回
nil
或将消息转发到
super
,在这种情况下,将重新启用缩放功能(取决于您显示的内容)。从iOS 5开始,您可以使用
webView.scrollView.delegate=self。非常感谢,它真的帮了我很多忙!这似乎也是禁用WKWebView缩放的可靠方法,WKWebView没有scalesPageToFit标志,如果在UIViewController中使用UIWebView,我将从中获取代理---------------scrollView.delegate=self//self必须是UIScrollViewDelegate--------我的意思是从我应该分配的位置------self------?