如何在UIScrollView内部的UIWebView上启用放大?

时间:2010-02-08 05:02:19

标签: objective-c ios cocoa-touch uiwebview zoom

我在UIWebView内有一个UIScrollView(滚动视图包含另一个组件)

我尝试在UIWebView上的 Interface Builder Programmatic 上启用多点触控,但它仍无法缩放html,我是否需要同时处理在UIScrollViewUIWebView?或者我还有什么不设定的?

4 个答案:

答案 0 :(得分:344)

你必须设置scalesPageToFit = YES,以便在UIWebView上进行任何捏合和缩放

答案 1 :(得分:12)

好的,您需要同时执行上述操作,还需执行以下操作。我在主视图中有一个Web视图,但是没有用。

  1. 如上所述,首先必须在主视图中放置UIScrollView,然后将Web视图放在滚动视图中。
  2. 如上所述,在视图控制器中实现<UIScrollViewDelegate>,将滚动视图委托拖到Interface Builder中的视图控制器,然后实现viewForZoomingInScrollView方法。这必须返回指向UIScrollView的指针(返回myScrollView)。
  3. 我为Web视图和滚动视图创建了IBOutlet属性 - 将它们在NIB中链接到视图控制器。
  4. 在滚动视图上,转到属性检查器,设置最大和最小缩放系数(我设置0.5到5.0,效果很好)。
  5. 在Web视图的Attributes Inspector中:
  6. 在“网络视图”部分中,选择“缩放要适合的页面”
  7. 在“视图”部分中,选择“模式”,“左上角”
  8. 在底部的“查看”部分中,选中“启用用户互动”和“启用多重触控”

答案 2 :(得分:3)

使用JavaScript,你可以控制缩放级别,虽然我找到的oly解决方案看起来并不顺畅。

说你有<head>

<meta id="vp" name="viewport" content="width=768,initial-scale=1.0">

要缩放到4倍,仍然允许用户更改缩放,请更改内容两次:

var vp = document.getElementById('vp');
vp.content = "width=767,minimum-scale=4.0,maximum-scale=4.0,user-scalable=yes";
vp.content = "width=768,minimum-scale=0.25,maximum-scale=10.0,user-scalable=yes";

切换宽度非常重要 - 否则Mobile Safari会严重重绘错误(由于过度优化)。

您不能再次设置initial-scale - 第二次忽略它。

答案 3 :(得分:2)

您需要在控制器中实现viewForZoomingInScrollView方法,否则缩放将不会执行任何操作。 (我真的不知道为什么要这样做,但你去了。)

有关详细信息,请参阅http://developer.apple.com/iphone/library/documentation/WindowsViews/Conceptual/UIScrollView_pg/ZoomZoom/ZoomZoom.html