我一直在为我正在开发的OSX应用添加上下文菜单,并且已经成功创建了一个用于表视图的菜单。但是我在向NSDatePicker添加上下文菜单时遇到问题。我已将'菜单'插座连接到NSMenu,但右键单击NSDatePicker不会显示菜单。
我检查了日期选择器上的菜单属性,似乎设置正确。
尝试为NSDatePicker创建上下文菜单是否存在固有问题?如果是这样,有办法让这个工作(没有重新实现NSDatePicker)?如果可能的话,我也更愿意避免使用额外的按钮来显示菜单 - 右键单击日期选择器显然是直观的方式。
答案 0 :(得分:0)
在OS X 10.9.5上,class-dump
显示NSDatePicker
会覆盖-rightMouseDown:
(以及-rightMouseDragged:
和-rightMouseUp:
)。我猜它没有打电话给超级,所以(不小心?)阻止了上下文菜单。
首先,在日期选择器中右键拖动做一些独特的事情吗?我没能看到它,但谁知道呢。它可能取决于datePickerStyle
和/或datePickerMode
。
另外,我没有看到-mouseDown:
的覆盖。所以,我敢打赌,按住Control键会显示上下文菜单。
我建议您接受此限制。但是,如果您真的想强制解决问题,那么您可能需要继承NSDatePicker
并覆盖-rightMouse...
方法。对于-rightMouseDown:
,您可以致电NSMenu* menu = [self menuForEvent:theEvent]
,如果返回菜单,请致电[NSMenu popUpContextMenu:menu withEvent:theEvent forView:self]
。否则,什么都不做(即不要打电话给super
)。
对于其他两种方法,你应该什么都不做,以防止超级类方法在没有得到右键击落事件时看到右键和右键鼠标事件而感到困惑