objective c从菜单栏中删除复制按钮

时间:2012-12-10 22:18:54

标签: ios cocoa-touch copy selector menuitem

我正在编写一个使用webkit读取epub的应用程序。当我通过长按选择文本时,菜单栏会打开,并且应该只有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" action:@selector(facebookItemClicked:)]; UIMenuItem *twitterMenuItem = [[UIMenuItem alloc] initWithTitle:@"Twitter" action:@selector(twitterItemClicked:)];

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

如果有人可以帮助我,那就太棒了。

提前致谢。

1 个答案:

答案 0 :(得分:0)

解决了问题。

默认的UIWebView覆盖了我的menuBar操作。所以我创建了一个继承自UIWebView的类CustomWebView

+ (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