2010-02-28 75 views
8

后我有当用户选择上的UISegmentedControl一个选项卡被装载作为一个子视图一个UIWebview。出于某种原因,我无法让它允许pinch/zooming。 我设置在viewDidLoad:方法下面的代码,所以它应该工作。UIWebView中不会放大甚至设置scalesPageToFit为YES

self.myWebView = [[[UIWebView alloc] initWithFrame:self.view.frame] autorelease]; 
self.myWebView.backgroundColor = [UIColor whiteColor]; 
self.myWebView.scalesPageToFit = YES; 
self.myWebView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); 
self.myWebView.delegate = self; 
[self.view addSubview: myWebView]; 

我试图从NIB加载UIWebView,并没有用编程方式创建它。有什么我失踪?什么可能导致webview忽略捏和缩放?

谢谢!

+0

'scalesPageToFit = YES'它的作品,但它会改变您的默认内容大小,[看看我的回答这将有助于你。](http://stackoverflow.com/questions/7134576/enable-zooming-pinch -on-uiwebview/23971234#23971234) – iPatel 2014-07-22 03:19:19

回答

6

我看你设置autoresizingMask。这是否意味着你已经用CGRectZero初始大小创建UIWebView?你可以与文档进行交互吗?我的意思是,滚动/挖掘工作?

+0

我添加了一段我以前忽略的代码。我尝试删除没有区别autoresizingMask部分。是的,其他一切都很完美。 – Jonah 2010-02-28 14:07:49

+0

如何尝试不同的网页?要排除您正在测试的页面有一些配置不允许捏/缩放。 (这可能会受到页面的影响) – 2010-02-28 14:43:42

+0

你是对的。我只是加载维基百科页面,由于某些原因,他们不允许缩放。任何想法为什么他们不?谢谢! – Jonah 2010-02-28 14:51:47

1

您必须启用多点触控。捏涉及到屏幕上一个以上的手指:

[myWebView setMultipleTouchEnabled:YES]

+0

这不是问题所在。多点触控默认启用。维基百科手机网站似乎有一些代码阻止它放大。它在所有其他网站上运行良好。 – Jonah 2010-10-11 15:34:43

9
[webView stringByEvaluatingJavaScriptFromString:@"document.body.style.zoom = 5.0;"]; 

似乎是合适的解决方案

+1

太棒了!这是我想要的。 +1 – Joey 2011-02-25 09:04:30

+1

酷解决方案!这就是我正在寻找.... Thanx Vaibhav – Anshul 2011-09-12 11:49:41

+1

@Vaibhav Saran当你捏WebView和旋转设备时,它不会工作。 – Kamarshad 2012-10-11 11:54:58

7

我设置视口解决了这个:

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.5; user-scalable=1"/> 

好运

5

以我的经验,你需要之前设置scalesPageToFit UIWebView加载。这意味着viewDidLoad中之前设置等等。我做的是将其设置在文档的“shouldStartLoadWithRequest”

- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    //make sure that the page scales when it is loaded :-) 
    theWebView.scalesPageToFit = YES; 
    return YES; 
} 

我的解释是,scalesPageToFit属性决定了页面将如何加载。事实之后它不会改变事情。

希望这会有所帮助。

2

FYI:

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.5; user-scalable=1"/> 

的作品,但

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.5; user-scalable=YES"/> 

没有在iPhone上。该文件说使用是/否。在这种情况下,我想案件很重要。在obj-c中,值为YES/NO,并且1/0

1

这是Apple在webview类参考中建议的内容。

重要提示:您不应该在UIS​​crollView对象中嵌入UIWebView或UITableView对象。如果这样做,可能会导致意外的行为,因为两个对象的触摸事件可能混淆并被错误地处理。

相关问题