Отображение пользовательского UIView при нажатии UIMenuItem

Итак, я создал пользовательский вид, который я хочу отображать внизу экрана при нажатии на UIMenuItem.

У меня есть в моем ViewController.m:

UIMenuController *menuController = [UIMenuController sharedMenuController];
UIMenuItem *translateItem = [[UIMenuItem alloc] initWithTitle:@"Translate" action:@selector(translateClicked:)];
[menuController setMenuItems:[NSArray arrayWithObject:translateItem]];

Соответствующий UITextView имеет собственный UITextView с методами (CustomTextView.m):

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
if (action == @selector(copy:)) return YES;
if (action == @selector(translateClicked:)) return YES;
return NO;
}

- (IBAction)translateClicked:(id)sender
{
NSLog(@"In Custom UITextView");
}

Это показывает "Копировать" и "Перевести" как две опции меню. В настоящее время, когда нажата кнопка "Перевести", я получаю журнал "В пользовательском UITextView".

Возможно ли иметь метод внутри ViewController.m, чтобы иметь следующий код?

CustomPopUp *customView = [CustomPopUp customView];
[self.view addSubview:customView];

1 ответ

Решил это сам:

удалив строку:

if (action == @selector(translateClicked:)) return YES;

в CustomTextView.m

и добавление:

- (void) translateClicked: (id) sender
{
    NSLog(@"In ViewController");
}

в ViewController.m. Это позволило мне запускать методы в оригинальном UIViewController.

Другие вопросы по тегам