UIMenuController 不显示在第二个 UIViewController

Posted

技术标签:

【中文标题】UIMenuController 不显示在第二个 UIViewController【英文标题】:UIMenuController doesn't show in a second UIViewController 【发布时间】:2013-01-08 19:11:42 【问题描述】:

我有两个 UIViewController,一个是主要的,通过这个按钮你可以转到第二个。在 SecondView.m 我有以下代码:

    - (IBAction)showpopup:(id)sender 
    [self becomeFirstResponder];
    UIMenuController *sharedController = [UIMenuController sharedMenuController];
    UIMenuItem *x2 = [[UIMenuItem alloc] initWithTitle:@"2x2" action: @selector(mat)];
    UIMenuItem *x3 = [[UIMenuItem alloc] initWithTitle:@"3x3" action: @selector(mat)];
    UIMenuItem *x4 = [[UIMenuItem alloc] initWithTitle:@"4x4" action: @selector(mat)];
    UIMenuItem *x5 = [[UIMenuItem alloc] initWithTitle:@"5x5" action: @selector(mat)];

    NSArray *menuArray = [NSArray arrayWithObjects: x2,x3,x4,x5, nil];


    CGRect drawRect = [sender convertRect:[sender bounds] toView: self.view];
    [sharedController setTargetRect:drawRect inView: self.view];

    [sharedController setMenuItems:menuArray];
    [sharedController setMenuVisible:YES animated:YES];
    [sharedController setMenuItems: nil];


-(BOOL)canBecomeFirstResponder
    return YES;


-(int)mat:(id)sender
    return 0;

按钮被链接为“内部修饰”,但是当我运行 UIMenuController 时没有显示出来。 完全相同的代码在主 UIViewController 中工作。

谢谢

【问题讨论】:

【参考方案1】:

如果我没有遗漏任何东西,我认为您应该,例如,将您的 sharedController.view 作为子视图添加到您的 mainController.view,例如(假设在你的主控制器中定义了`showpopup):

- (IBAction)showpopup:(id)sender 
    [self becomeFirstResponder];
    UIMenuController *sharedController = [UIMenuController sharedMenuController];
    ...
    [sharedController setMenuItems:menuArray];
    [sharedController setMenuVisible:YES animated:YES];
    [sharedController setMenuItems: nil];
    [self.view addSubview:sharedController.view];

或者您可以模态显示您的 sharedController(替换上面的 addSubview 行):

[self presentViewController:sharedController animated:YES completion:nil];

无论如何,在我看来,“呈现”位丢失了。

【讨论】:

这是我在编辑之前所做的,我认为我错了,因为我收到了这个错误d.pr/i/34wz 你完全正确,对不起。我的建议都不适用。可能是因为您使用 `[sharedController setMenuItems: nil];` 重置菜单而没有出现菜单吗?尝试删除该行... 如何显示第一个控制器的第二个控制器?它在导航控制器中吗?标签栏控制器?用它的观点做addSubview 我通过调用“segue”的 UIButton 显示它,然后出现第二个视图

以上是关于UIMenuController 不显示在第二个 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章

更改视图控制器后 UIMenuController 不显示

菜单栏未显示在第二个窗口上

在第二个标签栏项目中不显示搜索控制器的键盘

PYQT GUI更新和通过Qthread在第二个窗口的QLCD显示器上显示浮点信号不起作用[关闭]

APNG 在第二个页面刷新后不同步

第一个下拉名称选择在第二个下拉列表中显示电子邮件值