1. ホーム
  2. ios

[解決済み] UIWebViewでユーザーを選択できないようにする

2022-08-03 17:35:44

質問

あるアプリで、コンテンツを UIWebView にコンテンツをロードし、これを表示するアプリがあります。ユーザーがリンクをクリックできるようにしたいので、ユーザーとの対話を完全に無効にすることはできません。私はちょうどユーザーの選択を無効にする必要があります。インターネッツのどこかに使えそうなものがありました。

document.body.style.webkitUserSelect='none';

として挿入してみました。

[self.contentView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitUserSelect='none';"]; 

webViewDidFinishLoad:

しかし、うまくいきません。私はまだWebView内のテキストを選択し、コピーすることができます。

何が間違っているのか、何かアイデアはありますか?

更新: これは iOS 4.3 以降でのみ発生するようです。

どのように解決するのですか?

選択範囲を無効にする方法をいくつか紹介します。

モバイルWebドキュメントに以下を追加してください。

<style type="text/css">
* {
    -webkit-touch-callout: none;
    -webkit-user-select: none; /* Disable selection/copy in UIWebView */
}
</style>

以下のJavascriptコードをプログラム的に読み込む。

NSString * jsCallBack = @"window.getSelection().removeAllRanges();";    
[webView stringByEvaluatingJavaScriptFromString:jsCallBack];

ユーザーメニューのコピー/ペーストを無効にします。

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender 
{    
    if (action == @selector(copy:) ||
        action == @selector(paste:)||
        action == @selector(cut:)) 
    {
        return _copyCutAndPasteEnabled;
    }
    return [super canPerformAction:action withSender:sender];
}