Как я могу заставить стандартный пузырь iPhone Copy появляться на UIImage? - PullRequest
6 голосов
/ 08 октября 2009

В iPhoto я могу просто держать палец над изображением, чтобы получить всплывающее окно «Копировать» (например, всплывающее окно, которое вы видите в текстовых полях).

В моем UIImageView это не так. Как я могу включить это?

1 Ответ

16 голосов
/ 08 октября 2009

Вы можете вручную отобразить меню Вырезать / Копировать / Вставить, используя 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: метод для обработки того, что происходит, когда пользователь выбирает этот пункт меню.

...