2012-02-04 117 views
16

在我正在開發的iOS應用中,我顯示一個UIWebView以允許用戶升級其帳戶。該頁面包含的鏈接,以顯示該用戶的其他信息,但你按住鏈接在你的手指,像這樣的菜單會彈出: enter image description here防止iOS Webkit長按鏈接

正如你所看到的,它揭示了頁面的URL和的行動,將被執行,我不希望用戶看到,因爲我不希望他們能夠複製任何東西,因爲我已禁用「複製/剪切/粘貼」菜單。我怎麼去關閉這個菜單呢?

感謝您的指點。

+0

有沒有什麼好的理由可以阻止用戶這樣做?對我來說似乎沒有麻煩會更容易。 – millimoose 2012-02-04 22:21:33

回答

32

我想你可以通過在鏈接上設置the CSS -webkit-touch-callout propertynone來禁用該彈出窗口。你可以通過編輯你正在加載的HTML或CSS文件來完成,而不是使用Objective-C。

16

你想要做什麼,如Rob已經說明,是要禁用UIWebView的默認上下文菜單。您可以通過添加以下行來webViewDidFinishLoad:

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

如果你想都禁止彈出文本的用戶選擇你的整個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; 
} 
+0

這起作用。但是,如果您擔心用戶更改CSS,請使用[其他答案](http://stackoverflow.com/a/15538022/642706)建議的編程方法。並搜索相關/重複的問題和答案。 – 2014-11-15 06:16:23

+3

您可以使用'* {'而不是'body {'來覆蓋所有內容。 – 2014-11-15 06:17:22

+2

如果你想讓你的輸入和textareas工作,你需要使用'*:not(input,textarea){}'' – 2015-08-06 19:14:55

0

沒有必要告訴你有一個鏈接的瀏覽器,然後迫使它不會表現得像一個!

只需完全刪除href="void(0)"

您的ontouchendonclick屬性仍將工作


如果你想正常的藍色/下劃線再看看,您可以添加這個CSS:

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

這樣可以節省大量的CPU週期,尤其是當有幾百個鏈接的網頁,而用戶是平滑滾動。

您也可以使用此此擴展到正規網址:

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

當然你的SEO是窗外,但對於一個特定移動網絡應用程序的情況這可能是至關重要的。

快樂編碼!