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;
}

これはメニューバーのアクションをオーバーライドし、webvew を使用する他のクラスでwebviewこれを使用します。CustomWebView

于 2012-12-24T15:34:35.167 に答える