几乎,我已经尝试过在UIWebView
中禁用复制/粘贴的所有内容,但没有任何关系。
我正在从字符串(字符串数组)加载UIWebView
,如下所示:
[webView loadHTMLString:
[NSString stringWithFormat:@"%@<p class=\"paragraph\" style=\"float: right\" >%@</p>",css,[[array objectAtIndex:0] valueForKey:@"content"]] baseURL:nil ];
我试过这个:
-(void)webViewDidFinishLoad:(UIWebView *)webView1{
[webView1 stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitUserSelect='none';"];
}
和此:
NSString *css =
@"<head><style><body> *{-webkit-touch-callout: none; -webkit-user-select: none;}</style> </head> </body> ";
但没有任何关系 特别适用于iOS 4.2
答案 0 :(得分:7)
看起来更复杂......看看this thread on S.O详细说明了你要做的所有事情......
总结:你需要:修改您的CSS(就像您一样):
<style type="text/css">
* {
-webkit-touch-callout: none;
-webkit-user-select: none; /* Disable selection/Copy of UIWebView */
}
</style>
添加一些javascript:
NSString * jsCallBack = @"window.getSelection().removeAllRanges();";
[webView stringByEvaluatingJavaScriptFromString:jsCallBack];
停用复制/粘贴菜单:
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
BOOL superCanPerform = [super canPerformAction:action withSender:sender];
if (superCanPerform) {
if (action == @selector(copy:) ||
action == @selector(paste:)||
action == @selector(cut:))
{
return _copyCutAndPasteEnabled;
}
}
return superCanPerform;
}
应在UIWebView中定义 canPerformAction
;你有两个选择:
为UIWebView定义一个类别(如果可以从所有UIWebView中删除此行为);
从UIWebView
派生您自己的网络视图类,并在那里覆盖该方法。
答案 1 :(得分:7)
-webkit-user-select: none; /* Disable selection/Copy of UIWebView */
也会禁用Mobile Safari上的表单。
答案 2 :(得分:0)
使用此功能。
<style type="text/css">
*: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 */
}
</style>
If you want Disable only anchor button tag use this.
a {-webkit-user-select: none; /* disable selection/Copy of UIWebView */
-webkit-touch-callout: none; /* disable the IOS popup when long-press on a link */
}