NSSegmentedCell子类的鼠标事件?

时间:2009-06-27 03:20:41

标签: objective-c cocoa

我正在尝试在我正在研究的Cocoa编辑器中实现一些基本选项卡。我正在使用NSSegmentedControl并将其作为选项卡添加到其中。我正在使用自定义的NSSegmentedCell子类为选项卡在文本旁边绘制一个“x”图标以关闭标签,到目前为止,它已经非常流畅。

但是,我无法弄清楚如何实际处理标签的鼠标事件,以检查是否有人将鼠标悬停(或点击)了“x”图标。我尝试在我的NSSegmentedControl子类中覆盖“mouseMoved”,但由于一些奇怪的原因,当我向它添加一个新段时它停止被调用(我在awakeFromNib中将“setAcceptsMouseMovedEvents”设置为yes,我是否还必须在其他地方设置它? )。作为NSCell子类的NSSegmentedCells似乎除了鼠标跟踪之外没有任何鼠标事件处理,只有在单击控件时才会触发。

所以问题是,如何在NSSegmentedControl或NSSegmentedCell子类中正确处理鼠标事件?

1 个答案:

答案 0 :(得分:2)

看看NSTrackingArea。您可以向NSSegmentedControl添加跟踪区域,并在其上输入鼠标输入事件以突出显示关闭按钮。

至于获取点击事件,您可能最好使用单独的NSActionCell子类作为关闭按钮,并在那里进行一些命中测试。