Iphone UIWebView在启用scalesPageToFit时禁用缩放
当“缩放页面以适应”处于启用状态时,是否有任何方法禁用缩放???在Iphone UIWebView在启用scalesPageToFit时禁用缩放,iphone,uiwebview,Iphone,Uiwebview,当“缩放页面以适应”处于启用状态时,是否有任何方法禁用缩放???在UIWebView中有一个名为scrollView的属性。通过它你可以定义这一点。 更具体地说,它应该如下所示: myWebView.scrollView.minimumZoomScale = 1.0; myWebView.scrollView.maximumZoomScale = 1.0; webview.scrollView.delegate = self; 从: scalesPageToFit 一个布尔值,用于确定网页是
UIWebView
中有一个名为scrollView
的属性。通过它你可以定义这一点。
更具体地说,它应该如下所示:
myWebView.scrollView.minimumZoomScale = 1.0;
myWebView.scrollView.maximumZoomScale = 1.0;
webview.scrollView.delegate = self;
从:
scalesPageToFit
一个布尔值,用于确定网页是否缩放以适应视图
用户可以更改比例
@属性(非原子)BOOL scalesPageToFit
讨论
如果是,则网页将按比例缩放,用户可以放大和缩放
出来如果否,则禁用用户缩放。默认值为否
因此,如果要更改该行为,可能必须将UIWebView子类化。编辑:
实现委托方法
- (void)webViewDidFinishLoad:(UIWebView *)webView
对于您的web视图,并在其中添加以下代码:
[webView stringByEvaluatingJavaScriptFromString: @"$('body').bind('touchmove', function(event) { event.preventDefault() });"];
问题是这也会禁用滚动,因为它会禁用触摸移动。
如果要保持滚动,必须编写java脚本,用以下内容覆盖视口元标记:
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
这对我很有用:
UIScrollView *scrollView = [webView.subviews objectAtIndex:0];
scrollView.delegate = self;//self must be UIScrollViewDelegate
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return nil;
}
更新:对于iOS 5或更高版本,获取如下滚动视图:
myWebView.scrollView.minimumZoomScale = 1.0;
myWebView.scrollView.maximumZoomScale = 1.0;
webview.scrollView.delegate = self;
而不是使用
UIScrollView *scrollView = [webView.subviews objectAtIndex:0];
scrollView.delegate = self;//self must be UIScrollViewDelegate
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return nil;
}
您可以使用以下选项:
webview.scrollView.delegate = self;
-(UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView {
return nil;
}
第二种选择是更好和充分的证明。第一个逻辑可能在未来的SDK中失败。因此它在我身上起作用:
NSString *fullURL = @"http://google.com";
NSURL *url = [NSURL URLWithString:fullURL];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
_webView.scrollView.scrollEnabled = TRUE;
_webView.contentMode = UIViewContentModeScaleAspectFit;
_webView.scalesPageToFit = FALSE;
[_webView loadRequest:requestObj];
错误即使您将缩放级别设置为1.0,缩放仍然存在。如果将webView的委托函数放入
-(void)webViewDidFinishLoad:(UIWebView*)webView
,则缩放实际上有效。抱歉,这对我不起作用,即使将其放入webViewDidFinishLoad。如果我使用“webView.scrollView.ZoomCale”而不是1.0,并在“webViewDidFinishLoad”(记住设置web视图委托)中执行此操作,这很有效。。设置最小和最大缩放比例可以让WebView的scrollView知道它可以放大或缩小多少..+1获取此答案。您似乎在写,我正在搜索解决方案,我将编辑一个优秀的解决方案,工作非常完美,并在方法中使用if语句,您可以选择返回nil
或将消息转发到super
,在这种情况下,将重新启用缩放功能(取决于您显示的内容)。从iOS 5开始,您可以使用webView.scrollView.delegate=self代码>。非常感谢,它真的帮了我很多忙!这似乎也是禁用WKWebView缩放的可靠方法,WKWebView没有scalesPageToFit标志,如果在UIViewController中使用UIWebView,我将从中获取代理---------------scrollView.delegate=self//self必须是UIScrollViewDelegate--------我的意思是从我应该分配的位置------self------?