将scalesPageToFit设置为YES后,UIWebview甚至不会缩放

时间:2010-02-28 05:02:21

标签: iphone uiwebview zoom subview

当用户选择UIWebview上的标签时,我有UISegmentedControl作为子视图加载。出于某种原因,我不能让它允许pinch/zooming。 我在viewDidLoad:方法中设置了以下代码,因此它应该可以工作。

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忽略捏和缩放?

谢谢!

7 个答案:

答案 0 :(得分:9)

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

似乎是合适的解决方案

答案 1 :(得分:7)

我通过设置视口解决了这个问题:

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

答案 2 :(得分:6)

我看到你正在设置autoresizingMask。这是否意味着您创建的UIWebView初始大小为CGRectZero?你能和文件互动吗?我的意思是,滚动/点击工作吗?

答案 3 :(得分:5)

根据我的经验,您需要在UIWebView加载之前设置scalesPageToFit。这意味着在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属性决定了页面的加载方式。事后并没有改变事情。

希望这有帮助。

答案 4 :(得分:2)

供参考:

<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

答案 5 :(得分:1)

您必须启用多点触控。捏合在屏幕上涉及多个手指:

[myWebView setMultipleTouchEnabled:YES]

答案 6 :(得分:1)

这是Apple在webview类引用中的建议。

  

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