为了账号安全,请及时绑定邮箱和手机立即绑定

禁用UIWebView中的用户选择

/ 猿问

禁用UIWebView中的用户选择

iOS
胡子哥哥 2019-07-22 15:11:47

禁用UIWebView中的用户选择

我有一个应用程序将内容加载到UIWebView展示这个。我不能完全禁用用户交互,因为我希望用户能够单击链接。我只需要禁用用户选择。我在互联网上找到了你可以使用的地方:

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

我试着把这个插入

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

在……里面webViewDidFinishLoad:

但是,它不起作用。我仍然能够选择并复制WebView中的文本。

有什么可能出问题了吗?

更新:这似乎只发生在iOS 4.3开始


查看完整描述

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];}


查看完整回答
反对 回复 2019-07-22
?
慕标琳琳

我可以确认以下代码在IOS5.0-8.0中工作。

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    // Disable user selection
    [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';"];
    // Disable callout
    [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout='none';"];}

也适用于iOS 9和更高版本。这是快速代码:

func webViewDidFinishLoad(webView: UIWebView) {
    // Disable user selection
    webView.stringByEvaluatingJavaScriptFromString("document.documentElement.style.webkitUserSelect='none'")!
    // Disable callout
    webView.stringByEvaluatingJavaScriptFromString("document.documentElement.style.webkitTouchCallout='none'")!}


查看完整回答
反对 回复 2019-07-22
?
芜湖不芜

我在Android/iPhone(用Trigger.IO打包)的Web应用程序中使用了这种技术,发现它只适用于:NOT()伪类的链接语法:

*:not(input):not(textarea) {-webkit-user-select: none; /* disable selection/Copy of UIWebView */
    -webkit-touch-callout: none; /* disable the IOS popup when long-press on a link */}


查看完整回答
反对 回复 2019-07-22

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信