How can I get the standard iPhone Copy bubble to appear on a UIImage?

后端 未结 1 1599
遇见更好的自我
遇见更好的自我 2021-02-06 10:17

In iPhoto, I can simply hold my finger over an image to get a \"Copy\" popup (like the popup you see in text boxes).

In my UIImageView\'s, this is not the case. How can

1条回答
  •  礼貌的吻别
    2021-02-06 10:59

    You can manually display the Cut / Copy / Paste menu using the UIMenuController class. For example, the following code will display the menu, centered on your image:

    [self becomeFirstResponder];
    
    UIMenuController *copyMenuController = [UIMenuController sharedMenuController];
    
    [copyMenuController setTargetRect:image.frame inView:self.view];
    [copyMenuController setMenuVisible:YES animated:YES];
    

    This assumes that you'll be implementing this code in a UIViewController for the view that hosts your image.

    To enable the various menu items, you'll also need to implement a few delegate methods in your controller:

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

    In this case, only the Copy menu option will be enabled. You'll also need to implement the appropriate -copy: method to handle what happens when the user selects that menu item.

    0 讨论(0)
提交回复
热议问题