我有UIWebView用于显示一些文章。我需要从UIWebView中选择一些文本并使用书签。所以我正在使用selection = [wbCont stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString()"];
但是当我长按UIMenuItem显示副本时,定义。我阅读了一些文档并使用了canPerformAction:
副本NO。但它还在显示。
- (void)viewDidLoad
{
[wbCont loadHTMLString:webString baseURL:nil];
[self.view addSubview:wbCont];
NSMutableArray *items = [[[UIMenuController sharedMenuController] menuItems] mutableCopy];
if (!items) items = [[NSMutableArray alloc] init];
UIMenuItem *menuItem;
menuItem = [[UIMenuItem alloc] initWithTitle:@"BookMark" action:@selector(book:)];
[items addObject:menuItem];
[menuItem release];
menuItem = [[UIMenuItem alloc] initWithTitle:@"Note" action:@selector(note:)];
[items addObject:menuItem];
[menuItem release];
[[UIMenuController sharedMenuController] setMenuItems:items];
[items release];
}
- (BOOL) canPerformAction:(SEL)action withSender:(id)sender
{
if (action == @selector(copy:))
{
return NO;
}
if (action == @selector(book:))
{
return YES;
}
else if (action == @selector(note:))
{
return YES;
}
return [super canPerformAction:action withSender:sender];
}
答案 0 :(得分:0)
您必须继承UIWebView。 (创建一个新的Objective-C类并选择UIWebView的子类。)
在您的子类中编写方法:
- (BOOL) canPerformAction:(SEL)action withSender:(id)sender{ if (action == @selector(copy:)) { return NO; } return [super canPerformAction:action withSender:sender]; }
如果要在控制器中添加自定义选择器,则无需在那里设置自己的自定义选择器(因为我猜你正在做的事情)。
可在此处找到更多详细信息:How do you REALLY remove Copy from UIMenuController