【问题标题】:How to disable long touch in UIWebView?如何在 UIWebView 中禁用长触摸?
【发布时间】:2011-05-17 21:13:12
【问题描述】:

我想从应用程序中禁用长触摸。我无法控制在 WebView 上加载的 HTML。

【问题讨论】:

标签: uiwebview uiwindow uiwebviewdelegate


【解决方案1】:

不再支持 UIWebView。因此,您应该实现 WKWebView,并且有一个名为 allowsLinkPreview 的属性,您可以使用它启用或禁用长触摸预览。

 webView.allowsLinkPreview = false

【讨论】:

    【解决方案2】:

    在 Interface Builder 中打开您的视图,单击 Web 视图,然后在属性检查器中取消选中“启用用户交互”复选框。

    如果您想在代码中执行此操作,请将 Web 视图的 userInteractionEnabled 属性设置为 NO

    【讨论】:

    • 禁用所有交互不是吗?不只是长按?
    【解决方案3】:

    webViewDidFinishLoad delegate 中,我在加载的 html 页面上运行了一个禁用长触摸的 javascript。

    [webView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitTouchCallout='none'; document.body.style.KhtmlUserSelect='none'"];
    

    【讨论】:

    • 我添加了相同的行。但它不起作用。不知道出了什么问题.. :( 在大多数链接中我找到了与上面相同的解决方案..
    • - (void)webViewDidFinishLoad:(UIWebView*)theWebView { [theWebView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitTouchCallout='none'; document.body.style.KhtmlUserSelect='none'" ]; } 但仍然不适合我
    • @Denny 这个答案来自 2015 年,我可能从那时起 webkit 发生了一些变化。这个想法应该是一样的,将 javascript 注入到 web 视图中,这将禁用长触摸。
    • 您也可以添加:[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';"]; 用于 Objective-C 或 webView.stringByEvaluatingJavaScript(from: "document.documentElement.style.webkitUserSelect='none';") 用于 Swift
    【解决方案4】:

    您可以尝试从视图控制器覆盖以下方法:

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
    

    通过这种方式,您可以用自己的实现替换通常的触摸管理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-31
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      • 2020-04-10
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      相关资源
      最近更新 更多