Как я могу заставить стандартный пузырь iPhone Copy появиться на UIImage?

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

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


person Bill    schedule 07.10.2009    source источник


Ответы (1)


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

person Brad Larson    schedule 08.10.2009