在 OS X 10.9.5 上,class-dump显示NSDatePicker覆盖-rightMouseDown:(以及-rightMouseDragged:和-rightMouseUp:)。我猜它不会调用 super 并且(不小心?)阻塞上下文菜单。
首先,在日期选择器中右拖会做一些独特的事情吗?我一直没能看到它,但谁知道呢。它可能取决于datePickerStyle和/或datePickerMode。
另外,我没有看到-mouseDown:. 所以,我敢打赌,点击 Control 会调出上下文菜单。
我建议您接受此限制。但是,如果您真的想强制执行此问题,则可能需要子类NSDatePicker化并覆盖这些-rightMouse...方法。对于-rightMouseDown:,您可以调用NSMenu* menu = [self menuForEvent:theEvent],如果返回菜单,则调用[NSMenu popUpContextMenu:menu withEvent:theEvent forView:self]。否则,什么都不做(即不调用 to super)。
对于其他两种方法,您可能不应该做任何事情来防止超类方法在没有获得鼠标右键事件时看到右键拖动和鼠标右键事件而感到困惑。