如何在UIWebView中禁用双击事件

6
我正在构建一个自定义的Web应用程序,其中一个经常妨碍我的功能是UIWebView上的“双击缩放”。我在这个论坛和网络上搜索了很久,但没有找到明显的禁用方法。如何在我的应用程序中禁用或忽略双击缩放?

当您点击Web视图时,您希望发生什么?它是否应该像浏览器一样做出反应? - Black Magic
看起来 Craig 想禁用双击...这取决于 Craig 使用的框架。 - 3pic
3pic说得对,如果可能的话,我想完全禁用双击功能,因为下面提供的解决方案虽然可以解决问题,但会在加载时缩放页面。3pic,我正在使用8.1框架(这是你需要知道的吗?) - C4W
4个回答

5
您可以在viewDidLoad方法中添加以下代码来禁用缩放功能:

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

myWebView.scalesPageToFit = NO;

还有一种方法可供选择。将这个meta标签添加到您的webView内容的head部分:

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

谢谢,这正是我所需要的!这是一个如此简单而高效的解决方案,解决了我原本认为会成为头痛问题的难题!scalePageToFit起到了关键作用。 - C4W
我说得太早了,虽然这解决了问题,但现在默认情况下已经放大到最大了。 - C4W
尝试这个:[webView stringByEvaluatingJavaScriptFromString:@"document.body.style.zoom = 5.0;"]; - hmak.me
我不想要缩放,但似乎禁用缩放对我显示的页面无效,所以我认为禁用双击可以达到我需要的效果。 - C4W
@CraigS 我在下面编辑了我的答案.. 你想试试看它是否有效吗? - Subbu
显示剩余5条评论

5
我猜测您正在开发一款Web应用,所以您的代码是由HTML/Css/Js编写的。
解决方案:在标签中添加以下内容:
<meta name="viewport" content="user-scalable=0">

建议 学习关于meta viewport选项的知识将会使您受益匪浅,特别是在为移动设备设计web应用时,尤其是苹果设备。


谢谢您,我没有说我不想编辑网页来使解决方案工作,而是希望改变应用程序本身。 - C4W
哦,好的。所以你得到了答案,很好。(给我一个+1吧 ;) ) - 3pic

2

第一种选择 - 通过设置此选项,您可以禁用双击和捏合缩放。

_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! - C4W
@CraigS 我编辑了我的答案,添加了另一种选项来运行JS以防止缩放。不需要再设置scalesPageToFit = NO,这个更改应该可以正常工作。让我知道进展如何。 - Subbu
当我将此代码放入webViewDidFinishLoad中时,双击缩放被禁用了,但是页面又被放大了。 - C4W
你尝试过移除所有其他代码,仅将缩放比例设置代码和scalesPageToFit设置回YES吗?我测试过了,它按预期工作。 - Subbu
是的,我做了,scalePageToFit和multipleTouchEnabled都被注释掉了,所以现在我在webViewDidFinishLoad中只是执行你提供的那段代码。 - C4W

0
一个奇怪的解决方法(不要问我它是如何工作的)是隐藏状态栏。当状态栏被隐藏时,双击不再缩放网页视图。
override var prefersStatusBarHidden : Bool {
    return true
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接