我有一个NSControl
子类(配置为图层托管视图,但我怀疑它是否相关)。我一直在尝试编写代码来获取并显示上下文菜单。但是,menuForEvent:
或rightMouseDown:
都未被调用。知道是什么原因造成的吗?其他鼠标事件正常工作。
顺便说一句,我不确定我是否必须自己拨打menuForEvent:
,但是文档听起来好像我没有,这就是为什么我首先尝试覆盖它。无论如何,我至少应该期待rightMouseDown:
被召唤......
相关:似乎AppKit无法识别Ctrl + Click作为鼠标右键单击。大概我必须在mouseDown:
中检查这种情况并手动调用rightMouseDown:
。但鉴于我所看到的奇怪,是否有其他方法可以做到这一点?
答案 0 :(得分:1)
从mouseDownCanMoveWindow
检查其返回值。文档并不十分清楚,但暗示如果此方法返回YES
,则视图(控件)将不会获得鼠标按下事件。
如果结果证明是你的问题,请创建控件类的子类(如果它还不是子类)并实现该方法以返回NO
。
答案 1 :(得分:1)
您是否在您的子类中包含了-(NSView *)hitTest:(NSPoint)aPoint
方法?可能是视图中的另一个元素正在拾取鼠标事件,这会阻止调用menuForEvent
。
你认为应该自动调用menuForEvent是正确的。