禁用放大WKWebView?

有没有人知道一个简单的方法来禁用WKWebView中的双击和缩放? 我没有尝试过任何工作:

Webview.scrollView.allowsMagnification = false; // Error: value of type WKWebView has no member allowsMagnification Webview.scrollView.isMultipleTouchEnabled = false; // doesn't do anything 

在html中:

  // pile of crap, does nothing 

您必须在脚本中添加最大比例。

以下代码可以帮助您:

 let source: String = "var meta = document.createElement('meta');" + "meta.name = 'viewport';" + "meta.content = 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no';" + "var head = document.getElementsByTagName('head')[0];" + "head.appendChild(meta);"; let script: WKUserScript = WKUserScript(source: source, injectionTime: .atDocumentEnd, forMainFrameOnly: true) let userContentController: WKUserContentController = WKUserContentController() let conf = WKWebViewConfiguration() conf.userContentController = userContentController userContentController.addUserScript(script) let webView = WKWebView(frame: CGRect.zero, configuration: conf) 

斯威夫特4:

 @IBOutlet weak var webView: WKWebView! override func viewDidLoad() { super.viewDidLoad() self.webView.scrollView.delegate = self } //MARK: - UIScrollViewDelegate func scrollViewWillBeginZooming(_ scrollView: UIScrollView, with view: UIView?) { scrollView.pinchGestureRecognizer?.isEnabled = false } 

这篇文章解释了如何管理缩放。

WebKit:iOS 10中的新交互行为

在iOS 10中,在WKWebView中添加了“ignoresViewportScaleLimits”属性,默认情况下为false。 post建议设置为true并正确管理页面中的缩放。

注意:在Safari和SafariViewController中,默认情况下此属性的值为true。

在我的情况下,我想在某些情况下重置缩放。 为此,我发现它的独特方式是将最大比例更改为1.0,然后更改为10.0。

 NSString* js = @"var meta = document.createElement('meta'); " \ "meta.setAttribute( 'name', 'viewport' ); " \ "meta.setAttribute( 'content', 'width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = yes' ); " \ "document.getElementsByTagName('head')[0].appendChild(meta)"; [_wkWebview evaluateJavaScript:js completionHandler:^(id _Nullable object, NSError * _Nullable error) { NSString* js = @"var meta = document.createElement('meta'); " \ "meta.setAttribute( 'name', 'viewport' ); " \ "meta.setAttribute( 'content', 'width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 10.0, user-scalable = yes' ); " \ "document.getElementsByTagName('head')[0].appendChild(meta)"; [_wkWebview evaluateJavaScript:js completionHandler:nil]; }]; 

这段代码应该有效但是我建议总是在html中创建“viewport”并在javascript中创建一个函数(即resetZoom或disableZoom)直接从objective-C调用它(它更干净)

我希望它有所帮助。