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

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

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

【问题讨论】:

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

标签: ios objective-c uiwebview


【解决方案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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-12
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多