0

所以我创建了一个自定义视图,我希望在单击 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];
4

1 回答 1

0

自己解决了这个问题:

通过删除该行:

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

在 CustomTextView.m

并添加:

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

在 ViewController.m 中。这允许我在原始 UIViewController 中运行方法。

于 2014-02-03T11:33:45.057 回答