NSWindow - 右键菜单

4
有没有办法在右键单击NSWindow时显示菜单?
2个回答

18

在窗口中右键单击视图,您会发现一个名为“menu”的属性。将此菜单属性与应在右键单击后显示的菜单连接起来。


8
如果您在以后查看电子邮件时发现人们正在给您删除的答案点赞并想知道原因:我编辑了您的答案,纠正了其中一个不准确之处,并呼吁关注我的 Twitter 的其他 Stack Overflow 用户投票将其恢复。在我和其他两个人投票支持下,您现在已经正确的答案被恢复了。 - Peter Hosey

3

是的。 NSWindow 继承自 NSResponder,它有方便的方法,如-rightMouseDown:

编辑

实际上,更好的方法可能是使用自定义的 NSView 子类作为窗口的 contentView,并重写 -menuForEvent:NSView 上的一个方法),以返回您的右键单击菜单,并判断传递的NSEvent是否为右键单击事件。


好的,那很好。我该如何使NSMenu仅在用户右键单击的位置可见? - Seb Jachec
我对这个毫无头绪...这样做对吗?接下来该怎么办?- (void)menuForEvent:(NSEvent *)event,然后我加上了if (event == NSRightMouseDown)。 - Seb Jachec
@magikseb:没错,看起来就是这样(不过方法应该不是-(void)...而是-(NSMenu *)...)。 - Dave DeLong
对不起,我真的不理解这个。我需要将NSMenu作为输入传递吗?在方法内部该怎么做?:S - Seb Jachec
1
不要覆盖这两个方法。设置视图的“菜单”,视图会为您做正确的事情。您甚至不需要子类化NSView来完成这个操作。 - Peter Hosey
1
我看到了一个踩的标记——似乎有人对我的评论过于苛刻了。很抱歉。公平地说,Dave的答案是可以用的,而menuForEvent:是在需要自定义或选择菜单时的正确解决方案;我只是想说,当你不需要时,在nib中简单设置菜单(或在必要时运行时间)会更容易一些。 - Peter Hosey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接