禁用UIWebView的缩放功能

7

我是iOS开发新手,正在开发一个应用程序,将在UIWebView中显示网页。我想要取消默认的webview缩放功能。


1
请考虑将其中一个回答选为正确答案。谢谢。 - brainray
11个回答

25

这是苹果文档中的内容:

@property(nonatomic) BOOL scalesPageToFit
Discussion
If YES, the webpage is scaled to fit and the user can zoom in and zoom out. If NO, user zooming is disabled. The default value is NO.

使用Interface Builder方法:

  1. 在单击Web视图时,确保接口生成器右侧列中的“缩放页面以适应”复选框未被选中。它就在顶部。

  2. 您还需要取消选中“多点触控”复选框,该复选框位于中间位置左右。这将禁用捏合缩放功能。

代码实现方法:

您也可以使用以下代码以编程方式实现:

webView.scalesPageToFit = NO;

你还需要添加以下内容:

webView.multipleTouchEnabled = NO;

那会禁用缩放功能,因为它禁用了使用多个手指进行操作的能力,而缩放显然需要两根手指!


1
webView.multipleTouchEnabled对webview没有任何作用。 - Leslie Godwin

6
将UIWebView属性scalesPageToFit设置为NO,将禁用用户缩放。
myWebView.scalesPageToFit = NO;

5

只需要做以下操作:

myWebView.scalesPageToFit = NO;

并且禁用讨厌的缩放手势:

webView.multipleTouchEnabled = NO;


webView.multipleTouchEnabled对webview没有任何作用。 - Leslie Godwin

3

对我来说,最理想的解决方案竟然只涉及到 HTML 部分。只需在 <head> 中添加以下内容:

<meta name="viewport" content="user-scalable=0" />

我不建议使用webView.scalesPageToFit = false,因为它会导致一些问题,比如让所有东西变得四倍大。我也没有使用initial-scale=1.0maximum-scale=1.0minmum-scale=1.0


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

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

尝试这个...它有效。


2
禁用scrollView的bouncesZoom功能可以解决您的问题。试试看吧!"Original Answer"翻译成"最初的回答"。
webView.scrollView.bouncesZoom = false

1

试试这个:

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

1

快速解决方案

只需将上述提到的值设置为false:webView.scalesPageToFit = false


1

当从UIWebView继承时,您可以实现此功能。(适用于iOS 5及更高版本,更低版本不确定)

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

0
我在使用WebView滚动事件时一开始也遇到了困难,后来我找到了以下代码以禁用WebView中的滚动,并且这也会移除特定WebView中的多点触控手势功能。

[[[theWebView subviews] lastObject] setScrollEnabled:NO];

这里的theWebView是我的UIWebView的名称。 将此代码用于webViewDidFinishLoad函数中,对我非常有帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接