2012-02-04 24 views
16

私が開発しているiOSアプリケーションでは、ユーザが自分のアカウントをアップグレードできるようにUIWebViewを表示しています。ページは、ユーザー他の情報を表示するためのリンクが含まれていますが、リンク上で指を保持し、このようなメニューがポップアップします: enter image description hereiOS Webkitのリンクを長く押さないでください

をあなたが見ることができるように、そのページのURLとアクションを明らかに私はすでにコピー/カット/ペーストのメニューを無効にしているので、何もコピーできないようにしたいので、ユーザーには見せたくありません。このメニューを無効にするにはどうすればいいですか?

ありがとうございます。

+0

これをやめないようにする理由はありますか?面倒ではないと私には分かりやすいだろう。 – millimoose

答えて

32

このポップアップを無効にするには、the CSS -webkit-touch-callout propertynoneに設定してください。 Objective-Cではなく、読み込んでいるHTMLまたはCSSファイルを編集することでこれを行います。

16

Robはすでに既定のコンテキストメニューUIWebViewを無効にすることを目的としています。あなたは、あなたのHTMLページ全体上のテキストのポップアップユーザ選択を無効にし、あなたのウェブページのBODYにこれを使用するには、両方たい場合はwebViewDidFinishLoad:

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

に次の行を追加して、それを達成することができますまたはグローバルな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)で提案されているプログラム的なアプローチを使用してください。関連する/重複した質問と回答を検索します。 –

+3

すべてをカバーするために 'body {'ではなく '* {'を使うことができます。 –

+2

あなたの入力とテキストエリアを動作させたいなら '*:not(input、textarea){}'を使う必要があります –

0

ブラウザにリンクがあり、強制的に動作しないようにする必要はありません。

href="void(0)"を完全に削除してください。

ontouchendまたはonclickの属性は引き続きで動作します。


あなたは通常の青をしたい場合は/あなたはこのCSSを追加することができ、再び見下線:

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

これは、CPUサイクルの節約、リンクの数百ページの中に存在している場合は特にユーザは滑らかなスクロールである。

また、これを使用することにより、正規のURLにこれを拡張することができます。もちろん

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

あなたのSEOは、窓の外ですが、特定モバイルウェブアプリの状況のた​​め、これは重要なことができます。

ハッピーコーディング!

関連する問題