Ios 目标c从菜单栏中删除复制按钮

Ios 目标c从菜单栏中删除复制按钮,ios,cocoa-touch,copy,selector,menuitem,Ios,Cocoa Touch,Copy,Selector,Menuitem,我正在编写一个使用webkit读取epubs的应用程序。当我长按选择文本时,菜单栏打开,应该只有Facebook和Twitter按钮。这是我的代码,我是如何做到的: - (BOOL)canPerformAction:(SEL)action withSender:(id)sender { if (action == @selector(facebookItemClicked:) || action == @selector(twitterItemClicked:)) { return YES; }

我正在编写一个使用webkit读取epubs的应用程序。当我长按选择文本时,菜单栏打开,应该只有Facebook和Twitter按钮。这是我的代码,我是如何做到的:

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
if (action == @selector(facebookItemClicked:) || action == @selector(twitterItemClicked:)) {
return YES;
}else if (action == @selector(copy:)){
NSLog(@"copy");
} return NO;}
下面是初始化菜单项的方法

UIMenuItem*facebookMenuItem=[[UIMenuItem alloc]initWithTitle:@“Facebook”操作:@选择器(facebookItemClicked:)];
UIMenuItem*twitterMenuItem=[[UIMenuItem alloc]initWithTitle:@“Twitter”操作:@选择器(twitterItemClicked:)]


但问题是复制选择器从来不会显示为动作,所以我无法捕捉到它,每次显示菜单栏时,Facebook和Twitter旁边都会有一个复制按钮

如果有人能帮助我,那就太好了

提前感谢。

解决了问题

默认UIWebView覆盖了我的菜单栏操作。因此,我创建了一个从UIWebView继承的类

+ (void)initialize{
UIMenuItem *itemA = [[UIMenuItem alloc] initWithTitle:@"A" action:@selector(a:)];
UIMenuItem *itemB = [[UIMenuItem alloc] initWithTitle:@"B" action:@selector(b:)];
[[UIMenuController sharedMenuController] setMenuItems:[NSArray arrayWithObjects:itemA, itemB, nil]];
//    [itemA release];
//    [itemB release];
 }

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
BOOL can = [super canPerformAction:action withSender:sender];
if (action == @selector(a:) || action == @selector(b:))
    {
        can = YES;
    }
if (action == @selector(copy:))
    {
        can = NO;
    }
NSLog(@"%@ perform action %@ with sender %@.", can ? @"can" : @"cannot", NSStringFromSelector(action), sender);
return can;
}

这将覆盖
webview
中的菜单栏操作,然后我在使用webvew的其他类中使用此
CustomWebView

你可能想修改你的措辞。部分是不可理解的。恐怕我真的没有收到你的评论。“从未将其显示为动作,因此我无法捕捉它”很难理解。我的意思是,当canPerformAction通过它可以执行的所有动作“运行”时,例如复制、粘贴、剪切、定义、Facebook、twitter等。在这一行动作中,复制动作不会显示,因此我可以删除它,但它应该在那里。我无法理解复制操作不在该列表中的原因是什么?问题应标记为iOS。
UIResponder
docs状态“请注意,如果您的类对命令返回NO,那么响应器链上的另一个响应器仍然可能返回YES,从而启用该命令。”因此可能无法消除
copy:
。或者,您的
ui应用程序
或窗口级别的某个程序正在返回
YES
,您需要覆盖它以停止它。