如何在 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,我猜。
解决方案:在
<head></head>
中使用这个
<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 中禁用双击事件的主要内容,如果未能解决你的问题,请参考以下文章