WkWebView 不允许在加载后缩放某些网站

WkWebView not allow to zoom some website after loading

在这里,我以编程方式将我的 WkWebView 添加到主视图中,然后在我为 WkWebView 添加此委托之后

self.wkWebView.UIDelegate = self;
self.wkWebView.navigationDelegate = self;
wkWebView.scrollView.delegate = self;

然后一个一个加载网站并检查缩放功能,它对某些网站进行缩放,对其他网站不进行缩放

如果我正在加载 http://www.google.com - 那么它允许我进行缩放 如果我正在加载 https://www.42gears.com & https://www.facebook.com - 那么它不允许缩放功能(所有网站的缩放都在 safari 中工作,但在 WKWebView 中不工作)

注意:我正在检查 iPhone 并且我正在使用 Objective-C

请帮助我,在此先感谢。

这里我评估了 Javascript 的缩放功能,这里你需要在 didFinishNavigation 方法中添加它。所以使用这个你可以解决这个问题。

bool isAllowZoom = false;

-(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
{
   if(isAllowZoom){
        NSString *javascript = @"var meta = document.createElement('meta');meta.setAttribute('name', 'viewport');meta.setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=10.0, user-scalable=yes');document.getElementsByTagName('head')[0].appendChild(meta);";
       [webView evaluateJavaScript:javascript completionHandler:nil];
    }
    else
    {
        NSString *javascript = @"var meta = document.createElement('meta');meta.setAttribute('name', 'viewport');meta.setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no');document.getElementsByTagName('head')[0].appendChild(meta);";
        [webView evaluateJavaScript:javascript completionHandler:nil];
    }
}

谢谢,也许这会对你有所帮助。

updated Sapana Ranipa answer on swift 4 on Xcode 11 , iOS 12 ,13

let isAllowZoom: Bool = false

  func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        print("didFinish navigation")
        self.activityIndicatorwbweb.stopAnimating()

        if(isAllowZoom){
          let javascript = "var meta = document.createElement('meta');meta.setAttribute('name', 'viewport');meta.setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=10.0, user-scalable=yes');document.getElementsByTagName('head')[0].appendChild(meta);"
            webViewWB.evaluateJavaScript(javascript, completionHandler: nil)
        }
        else
        {

             let javascript = "var meta = document.createElement('meta');meta.setAttribute('name', 'viewport');meta.setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no');document.getElementsByTagName('head')[0].appendChild(meta);"
             webViewWB.evaluateJavaScript(javascript, completionHandler: nil)
        }

    }