rightMouseDown:未在NSControl子类中调用

时间:2009-09-07 02:24:40

标签: objective-c cocoa macos

我有一个NSControl子类(配置为图层托管视图,但我怀疑它是否相关)。我一直在尝试编写代码来获取并显示上下文菜单。但是,menuForEvent:rightMouseDown:都未被调用。知道是什么原因造成的吗?其他鼠标事件正常工作。

顺便说一句,我不确定我是否必须自己拨打menuForEvent:,但是文档听起来好像我没有,这就是为什么我首先尝试覆盖它。无论如何,我至少应该期待rightMouseDown:被召唤......

相关:似乎AppKit无法识别Ctrl + Click作为鼠标右键单击。大概我必须在mouseDown:中检查这种情况并手动调用rightMouseDown:。但鉴于我所看到的奇怪,是否有其他方法可以做到这一点?

2 个答案:

答案 0 :(得分:1)

mouseDownCanMoveWindow检查其返回值。文档并不十分清楚,但暗示如果此方法返回YES,则视图(控件)将不会获得鼠标按下事件。

如果结果证明是你的问题,请创建控件类的子类(如果它还不是子类)并实现该方法以返回NO

答案 1 :(得分:1)

您是否在您的子类中包含了-(NSView *)hitTest:(NSPoint)aPoint方法?可能是视图中的另一个元素正在拾取鼠标事件,这会阻止调用menuForEvent

你认为应该自动调用menuForEvent是正确的。