我知道这是最常见的常见问题解答之一。事实上,我找到了以下链接:
Disabling user selection in UIWebView
但我仍然无法从菜单选择中删除副本和定义项目。我只想在菜单中显示“快速”和“另一个”项目。任何人都能告诉我一个方法吗?感谢您的时间。这是我的代码和截图。
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if (action == @selector(quick:)) {
NSLog(@"my quick view");
return YES;
}else if (action == @selector(another:)){
NSLog(@"my another view");
return YES;
}else if (action == @selector(copy:) ||
action == @selector(paste:)||
action == @selector(cut:) ||
action == @selector(define:) )
{
return NO;
}
return [super canPerformAction:action withSender:sender];
}
答案 0 :(得分:1)
首先,要解决您的问题,请将define:
更改为_define:
以删除相关选项。
但是,_define:
是Apple私有API中的一项功能(因为_
),如果您想在App Store上发布它们,则无法在产品中使用它们。
但是,就copy:
选项而言,您的canPerformAction
应将其删除。
仅供参考,我在这里附上一个私有API函数列表,canPerformAction将调用它们:
_promptForReplace:
_showTextStyleOptions:
_define:
_addShortcut:
_accessibilitySpeak:
_accessibilitySpeakLanguageSelection:
_accessibilityPauseSpeaking:
因此,如果要删除上述任何功能,则必须创建自定义菜单栏。以下视频应该可以帮助您解决问题:
http://www.youtube.com/watch?v=SB7w8JEJSrc
好运!
修改强>
以下是您的解决方案:
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if (action == @selector(quick:)) {
NSLog(@"my quick view");
return YES;
}else if (action == @selector(another:)){
NSLog(@"my another view");
return YES;
}
return NO;
}
答案 1 :(得分:0)
尝试在这种方法中使用这个......
-(void)webViewDidFinishLoad:(UIWebView *)theWebView
{
[webView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitTouchCallout='none'; document.body.style.KhtmlUserSelect='none'"];
}
我希望它可以帮助你...