如何在 UIWebView 中禁用双击事件

Posted

技术标签:

【中文标题】如何在 UIWebView 中禁用双击事件【英文标题】:How to disable the double-tap event in UIWebView 【发布时间】:2015-07-10 14:29:50 【问题描述】:

我正在构建一个自定义 Web 应用程序,而 UIWebView 上的“双击缩放”是一个一直妨碍您的功能。我查看了这个论坛和网络,但没有看到明显的方法来禁用它。

如何在我的应用中禁用或忽略双击缩放?

【问题讨论】:

当您点击 web 视图时,您希望发生什么?应该像浏览器一样做出反应吗? 克雷格想禁用双击似乎很明显......这取决于克雷格使用的框架。 3pic 是对的,如果可能的话,我想完全禁用双击,因为下面提供的解决方案 - 在解决问题的同时 - 会在加载时放大页面。 3pic,我用的是8.1框架(这是你需要知道的吗?) 【参考方案1】:

您只需将此代码放在 viewDidLoad 方法中即可禁用缩放:

myWebView.scalesPageToFit = NO;

还有另一种方法。将此元标记添加到 webView 内容的 head 部分:

<meta name="viewport" content="user-scalable=0">

【讨论】:

谢谢,这正是我所需要的!如此简单有效的解决方案,我认为会让人头疼! scalePageToFit 成功了。 我说得太早了,虽然这确实解决了问题,但现在默认情况下一直放大 试试这个:[webView stringByEvaluatingjavascriptFromString:@"document.body.style.zoom = 5.0;"]; 或者这个:[self.webView.scrollView setZoomScale:2.0 animated:YES]; 大声笑,我只是自己尝试([myWebView stringByEvaluatingJavaScriptFromString:@""];)当那不起作用时,我回到这里看你的新 cmets :)。我尝试了这两个缩放命令,虽然都有一点帮助,但它仍然放大了【参考方案2】:

克雷格:你正在做一个网络应用程序......你的代码是 html/Css/Js,我猜。

解决方案:在&lt;head&gt;&lt;/head&gt;中使用这个

<meta name="viewport" content="user-scalable=0">

建议 如果您了解元视口选项,您将获胜。在为手机做网络应用程序时非常有用。尤其是苹果的。

【讨论】:

谢谢,我没有声明我不想编辑网页以使解决方案正常工作,但我希望更改应用程序本身。 哦,好的。所以你得到了答案,很好。 (给我一个 +1 ;))【参考方案3】:

第一个选项 - 您可以通过设置禁用双击和捏缩放。

_webView.scalesPageToFit = NO;
_webView.multipleTouchEnabled = NO;

第二个选项 - 您可以在 webViewDidFinishLoad 中执行以下代码以防止双击 - 缩放

NSString *js = @"var metaTag=document.createElement('meta');"
"metaTag.name = \"viewport\";"
"metaTag.content = \"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\";"
"document.getElementsByTagName('head')[0].appendChild(metaTag);";
[webView stringByEvaluatingJavaScriptFromString:js];

【讨论】:

非常感谢,我将第一个答案标记为解决了我的问题的答案,但我也加入了您的 mutlipleTouchEnabled! @CraigS 我编辑了我的答案以添加另一个选项来运行 JS 以防止缩放。您无需再设置 scalesPageToFit = NO 进行此更改。它应该可以工作。告诉我进展如何 当我把它放在 webViewDidFinishLoad 中时,双击被禁用,但它又被放大了 您是否尝试删除您添加的所有其他代码以设置缩放比例并将scalesPageToFit 设置回 YES.. 我对此进行了测试并按预期工作 是的,我做到了,scalePageToFit 和 multipleTouchEnabled 都被注释掉了,所以我现在只做你在我的 webViewDidFinishLoad 中提供的代码【参考方案4】:

一个奇怪的解决方案(不要问我它是如何工作的)是隐藏状态栏。隐藏状态栏后,双击不再缩放 web 视图。

override var prefersStatusBarHidden : Bool 
    return true

【讨论】:

以上是关于如何在 UIWebView 中禁用双击事件的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用鼠标双击事件

在 tkinter 中禁用鼠标双击事件

如何控制 UIWebView 上的触摸? (苹果手机)

在 iOS 中禁用 uiwebview 上的某些触摸事件

如何在 UIWebView 中禁用 cookie?

如何在UIWebView中禁用长触摸?