当scalesPageToFit为ON时,UIWebView禁用缩放

时间:2012-01-30 10:06:34

标签: iphone uiwebview

当Scales页面适合为ON时,有没有办法禁用缩放?

6 个答案:

答案 0 :(得分:63)

这对我有用:

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;

答案 1 :(得分:12)

而不是使用

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中,第一个逻辑可能会失败。

答案 2 :(得分:4)

scrollView中有一个名为UIWebView的媒体资源。通过它你可以定义它。 更具体地说,它应该是这样的:

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

答案 3 :(得分:3)

来自Apple Documentation

  

<强> scalesPageToFit

     

确定网页是否适合视图的布尔值   并且用户可以更改比例。

     

@property(nonatomic)BOOL scalesPageToFit

讨论

  

如果是,则缩放网页以适应并且用户可以放大和缩放   出。如果为NO,则禁用用户缩放。默认值为NO。

因此,如果您想要更改该行为,您可能必须继承UIWebView。

答案 4 :(得分:3)

编辑: 实施委托方法

- (void)webViewDidFinishLoad:(UIWebView *)webView

对于您的网络视图及其中添加以下代码:

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

问题是这也禁用了滚动,因为它禁用了触摸移动。 如果要保留滚动,则必须编写一个java脚本,该脚本将覆盖视口元标记:

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

答案 5 :(得分:-1)

所以它适用于我:

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