0

我一直在向我正在开发的 OSX 应用程序添加上下文菜单,并成功地为表格视图创建了一个菜单。但是,我在将上下文菜单添加到 NSDatePicker 时遇到问题。我已将“菜单”插座连接到 NSMenu,但右键单击 NSDatePicker 不会显示菜单。

我检查了日期选择器上的菜单属性,它似乎设置正确。

尝试为 NSDatePicker 创建上下文菜单是否存在固有问题?如果是这样,有没有办法让它工作(没有重新实现 NSDatePicker)?如果可能的话,我还希望避免使用额外的按钮来显示菜单 - 右键单击​​日期选择器显然是直观的工作方式。

4

1 回答 1

0

在 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)。

对于其他两种方法,您可能不应该做任何事情来防止超类方法在没有获得鼠标右键事件时看到右键拖动和鼠标右键事件而感到困惑。

于 2015-03-14T02:43:22.410 回答