我正在编写一个使用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旁边都会有一个复制按钮。
如果有人可以帮助我,那就太棒了。
提前致谢。
答案 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
。