我一直在为我正在开发的OSX应用程序添加上下文菜单,并且已经成功地为表视图创建了一个菜单。但是,我在向NSDatePicker添加上下文菜单时遇到了问题。我已经将“菜单”出口连接到了一个NSMenu,但是右键单击NSDatePicker不会打开菜单。
我已经检查了日期选择器上的菜单属性,并且它似乎被正确设置。
尝试为NSDatePicker创建上下文菜单是否存在固有的问题?如果是这样的话,是否有一种方法来实现这个工作(缺少重新实现NSDatePicker)?如果可能的话,我也希望避免使用额外的按钮来显示菜单--右击日期选择器显然是一种直观的方式。
发布于 2015-03-14 02:43:22
在OSX10.9.5上,class-dump显示NSDatePicker覆盖-rightMouseDown: (以及-rightMouseDragged:和-rightMouseUp:)。我猜它没有打到超级电话,所以也是(偶然?)阻塞上下文菜单。
首先,在日期选择器中正确地拖着做一些独特的事情吗?我一直没能看到,但谁知道呢。它可能依赖于datePickerStyle和/或datePickerMode。
而且,我没有看到-mouseDown:的覆盖。所以,我打赌点击控件会弹出上下文菜单。
我建议你接受这个限制。但是,如果您真的想强制解决这个问题,您可能需要对NSDatePicker进行子类化,并重写-rightMouse...方法。对于-rightMouseDown:,可以调用NSMenu* menu = [self menuForEvent:theEvent],如果返回菜单,则调用[NSMenu popUpContextMenu:menu withEvent:theEvent forView:self]。否则,什么也不做(即不打电话到super)。
对于另外两种方法,您可能不应该做任何事情来防止超类方法在没有得到右下鼠标事件的情况下看到右拖动和右上鼠标事件而变得混乱。
https://stackoverflow.com/questions/29044140
复制相似问题