6

iPhotoでは、画像の上に指を置くだけで、「コピー」ポップアップ(テキストボックスに表示されるポップアップのような)を取得できます。

私のUIImageViewでは、そうではありません。どうすれば有効にできますか?

4

1 に答える 1

16

UIMenuControllerクラスを使用して、[切り取り/コピー/貼り付け]メニューを手動で表示できます。たとえば、次のコードは、画像の中央にメニューを表示します。

[self becomeFirstResponder];

UIMenuController *copyMenuController = [UIMenuController sharedMenuController];

[copyMenuController setTargetRect:image.frame inView:self.view];
[copyMenuController setMenuVisible:YES animated:YES];

UIViewControllerこれは、画像をホストするビューのにこのコードを実装することを前提としています。

さまざまなメニュー項目を有効にするには、コントローラーにいくつかのデリゲートメソッドを実装する必要もあります。

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender 
{   
    if (action == @selector(cut:))
        return NO;
    else if (action == @selector(copy:))
        return YES;
    else if (action == @selector(paste:))
        return NO;
    else if (action == @selector(select:) || action == @selector(selectAll:)) 
        return NO;
    else
        return [super canPerformAction:action withSender:sender];
}

- (BOOL)canBecomeFirstResponder 
{
    return YES;
}

この場合、[コピー]メニューオプションのみが有効になります。また、ユーザーがそのメニュー項目を選択したときに何が起こるかを処理するために、適切な-copy:メソッドを実装する必要があります。

于 2009-10-08T01:24:24.580 に答える