gpt4 book ai didi

ios - 防止 UIWebView 为 tel 链接显示 UIPopoverController

转载 作者:可可西里 更新时间:2023-11-01 05:56:08 26 4
gpt4 key购买 nike

我正在使用 UIWebView(部署目标 iOS 5.0+)开发 iPad 应用程序。

当用户点击电子邮件、地址和电话号码时,我的 UIWebView 应该什么

我对电话号码有疑问。如果 html 页面包含这样的链接:<a href="tel:555-555-5555">555-555-5555</a>当用户点击此链接时,会出现 UIPopoverController(添加到联系人、复制)。

接下来我试过:

  • 在 UIWebView 的 xib 文件中关闭检测
  • webView.dataDetectorTypes = UIDataDetectorTypeNone;
  • 调用 JS - document.documentElement.style.webkitTouchCallout = "none";

UIWebView 委托(delegate)方法 shouldStartLoadWithRequest不适用于 iPad 上的电话号码,但适用于 iPhone

你有什么想法吗?

最佳答案

特定电话号码链接未被禁用的原因是它不是检测到 电话号码,它只是一个普通的旧 <a href=foo>链接恰好有一个电话链接 href属性。设置 dataDetectorTypes就像您正在做的那样是禁用电话号码检测的正确方法。因此,如果您的电话号码刚刚出现在网页文本中的某处,并且您想防止这些电话号码成为链接,请继续使用 webView.dataDetectorTypes = UIDataDetectorTypeNone; .

如果您想禁用所有看起来像电话号码的链接,您需要在页面加载完成后执行 JavaScript。在您的 UIWebView 委托(delegate)的 webViewDidFinishLoad 中方法使用[webView stringByEvaluatingJavaScriptFromString:]并传入 JavaScript 以替换有问题的链接。这是一个示例 JavaScript,它将用显示电话号码的文本元素替换所有电话样式链接。您可能想要稍微不同的东西,或者您可能只想从 DOM 中完全删除链接。

var links = document.getElementsByTagName('a');
for (var j = 0; j < links.length; j++) {
var href=links[j].getAttribute('href');
var prefix = href.substring(0,4);
if (prefix == "tel:") {
var parentNode = links[j].parentNode;
var replacementNode = document.createTextNode(href.substring(prefix.length, href.length));
parentNode.replaceChild(replacementNode, links[j]);
}
}

关于ios - 防止 UIWebView 为 tel 链接显示 UIPopoverController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15646062/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com