0

我正在编写一个使用 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 旁边还有一个复制按钮。

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

提前致谢。

4

1 回答 1

0

解决了问题。

默认 UIWebView 覆盖了我的 menuBar 操作。所以我创建了一个CustomWebView继承自 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然后我CustomWebView在其他使用 webvew 的类中使用它。

于 2012-12-24T15:34:35.167 回答