在我正在开发的iOS应用中,我显示一个UIWebView
以允许用户升级其帐户。该页面包含的链接,以显示该用户的其他信息,但你按住链接在你的手指,像这样的菜单会弹出: 防止iOS Webkit长按链接
正如你所看到的,它揭示了页面的URL和的行动,将被执行,我不希望用户看到,因为我不希望他们能够复制任何东西,因为我已禁用“复制/剪切/粘贴”菜单。我怎么去关闭这个菜单呢?
感谢您的指点。
在我正在开发的iOS应用中,我显示一个UIWebView
以允许用户升级其帐户。该页面包含的链接,以显示该用户的其他信息,但你按住链接在你的手指,像这样的菜单会弹出: 防止iOS Webkit长按链接
正如你所看到的,它揭示了页面的URL和的行动,将被执行,我不希望用户看到,因为我不希望他们能够复制任何东西,因为我已禁用“复制/剪切/粘贴”菜单。我怎么去关闭这个菜单呢?
感谢您的指点。
我想你可以通过在链接上设置the CSS -webkit-touch-callout
property到none
来禁用该弹出窗口。你可以通过编辑你正在加载的HTML或CSS文件来完成,而不是使用Objective-C。
你想要做什么,如Rob已经说明,是要禁用UIWebView
的默认上下文菜单。您可以通过添加以下行来webViewDidFinishLoad:
[webView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitTouchCallout='none';"];
如果你想都禁止弹出和文本的用户选择你的整个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;
}
这起作用。但是,如果您担心用户更改CSS,请使用[其他答案](http://stackoverflow.com/a/15538022/642706)建议的编程方法。并搜索相关/重复的问题和答案。 – 2014-11-15 06:16:23
您可以使用'* {'而不是'body {'来覆盖所有内容。 – 2014-11-15 06:17:22
如果你想让你的输入和textareas工作,你需要使用'*:not(input,textarea){}'' – 2015-08-06 19:14:55
没有必要告诉你有一个链接的浏览器,然后迫使它不会表现得像一个!
只需完全删除href="void(0)"
!
您的ontouchend
或onclick
属性仍将工作。
如果你想正常的蓝色/下划线再看看,您可以添加这个CSS:
a .originalLink { color: blue; text-decoration: underline; cursor: pointer; }
这样可以节省大量的CPU周期,尤其是当有几百个链接的网页,而用户是平滑滚动。
您也可以使用此此扩展到正规网址:
<a class="originalLink" onclick="location.href='http://mylink';">Real URL Link</a>
当然你的SEO是窗外,但对于一个特定移动网络应用程序的情况这可能是至关重要的。
快乐编码!
有没有什么好的理由可以阻止用户这样做?对我来说似乎没有麻烦会更容易。 – millimoose 2012-02-04 22:21:33