首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有模型NSWindow中视图的NSWindow

带有模型NSWindow中视图的NSWindow
EN

Stack Overflow用户
提问于 2019-09-25 16:46:01
回答 1查看 579关注 0票数 7

当从模态NSMenuItem中的按钮显示自定义视图时,没有对自定义视图执行选择器,我有一个问题。

这似乎是一个可复制的问题,我已经尽可能地简化了这个问题。

模态窗口通过。

代码语言:javascript
复制
   [NSApp runModalForWindow:_modalWindow];

模态窗口只有一个按钮,该按钮连接到下面的选择器。

代码语言:javascript
复制
- (IBAction)modalButtonClicked:(id)sender
{
    NSMenu* aMenu = [[NSMenu alloc] initWithTitle:@"Menu"];

    NSMenuItem* aItemA = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""];
    NSMenuItem* aItemB = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""];
    NSMenuItem* aItemC = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""];

    [aItemA setView:[NSButton buttonWithTitle:@"Item A" target:self action:@selector(menuButtonClicked:)]];
    [aItemB setView:[NSButton buttonWithTitle:@"Item B" target:self action:@selector(menuButtonClicked:)]];
    [aItemC setView:[NSButton buttonWithTitle:@"Item C" target:self action:@selector(menuButtonClicked:)]];

    [aMenu addItem:aItemA];
    [aMenu addItem:aItemB];
    [aMenu addItem:aItemC];

    [NSMenu popUpContextMenu:aMenu withEvent:[NSApp currentEvent] forView:sender];
}

菜单单击具有断点的事件:

代码语言:javascript
复制
- (void)menuButtonClicked:(id)sender
{
    NSLog(@"%@", sender);
}

单击该按钮将显示一个带有3个按钮的菜单,但是当您单击其中任何一个按钮时,都不会发生任何情况。@(menuButtonClicked:)从未被调用。这只是模态窗口的一个问题,但没有明显的原因。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-03 20:50:32

文档https://developer.apple.com/documentation/appkit/nsmenuitem/1514843-target?language=objc声明:

为了确保菜单项的目标在打开模态对话框时能够接收命令,目标对象应该在worksWhenModal中返回YES。

事实上,如果有人说:

代码语言:javascript
复制
- (BOOL)worksWhenModal {
    return YES;
}

然后它就开始工作了,您的方法menuButtonClicked给出了如下内容:

代码语言:javascript
复制
2019-10-03 22:47:27.892005+0200 MenuTest[12876:454071] <NSButton: 0x600003505760>
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58103088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档