当用户选择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忽略捏和缩放?
谢谢!
答案 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对象。如果这样做,可能会导致意外行为,因为两个对象的触摸事件可能会混淆和错误处理。