防止iOS Webkit长按链接

在我正在开发的iOS应用程序中,我展示了一个UIWebView以允许用户升级其帐户。 该页面包含显示用户其他信息的链接,但是您将手指放在链接上,会popup如下菜单: 在这里输入图像说明

正如你所看到的,它揭示了页面的URL和将要执行的操作,我不希望用户看到,因为我不希望他们能够复制任何东西,因为我禁用了“复制/剪切/粘贴“菜单。 我怎么去禁用这个菜单呢?

感谢任何指针。

我想你可以通过在链接上设置CSS -webkit-touch-callout属性为none来禁用popup窗口。 你可以通过编辑你正在加载的HTML或CSS文件来完成,而不是使用Objective-C。

正如Rob已经指出的那样,你想要做的就是禁用UIWebView的默认上下文菜单。 您可以通过webViewDidFinishLoad:添加到webViewDidFinishLoad:来实现它webViewDidFinishLoad:

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

如果要同时禁用popup窗口用户select整个HTML页面上的文本,请在网页的BODY或全局CSS上使用此选项。

  body { -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } 

没有必要告诉浏览器你有一个链接,然后强制它不像一个行为!

只要完全删除href="void(0)"

您的ontouchendonclick属性将仍然有效


如果你想再次使用正常的蓝色/下划线,你可以添加这个CSS:

 a .originalLink { color: blue; text-decoration: underline; cursor: pointer; } 

这样可以节省大量的CPU周期,特别是在页面上有数百个链接的情况下,用户可以平滑滚动。

您也可以使用以下方法将其扩展到常规URL:

 <a class="originalLink" onclick="location.href='http://mylink';">Real URL Link</a> 

当然,你的search引擎优化是窗口,但对于特定的移动networking应用程序的情况下,这可能是至关重要的。

快乐的编码!