我正在尝试在我正在开发的 Cocoa 编辑器中实现一些基本的选项卡。我正在使用 NSSegmentedControl 并向其添加段作为选项卡。我正在为选项卡使用自定义 NSSegmentedCell 子类,在用于关闭选项卡的文本旁边绘制一个小“x”图标,到目前为止一切都非常顺利。
但是,我无法弄清楚如何实际处理选项卡的鼠标事件来检查是否有人将鼠标悬停在(或单击)“x”图标上。我尝试在 NSSegmentedControl 子类中覆盖“mouseMoved”,但由于某种奇怪的原因,当我向其中添加新段时,它停止被调用(我在 awakeFromNib 中将“setAcceptsMouseMovedEvents”设置为 yes,我是否还必须在其他地方设置它? )。 NSSegmentedCells 是 NSCell 的子类,除了鼠标跟踪(仅在单击控件时才会触发鼠标跟踪)之外,似乎没有任何鼠标事件处理。
所以问题是,如何在 NSSegmentedControl 或 NSSegmentedCell 子类中正确处理鼠标事件?
最佳答案
看看NSTrackingArea
。您可以向 NSSegmentedControl
添加跟踪区域,并在该区域上获取鼠标输入事件以突出显示关闭按钮。
对于获取点击事件,您可能最好为关闭按钮使用单独的 NSActionCell
子类,并在那里进行一些点击测试。
关于objective-c - NSSegmentedCell 子类的鼠标事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1052043/