objective-c - NSSegmentedCell 子类的鼠标事件?

标签 objective-c cocoa

我正在尝试在我正在开发的 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/

相关文章:

ios - 如何以编程方式在 iPhone 上发送短信?

ios - iOS 8.1 中 CGContextDrawPDFPage 内存泄漏?

macos - 适合代码学习的开源 Mac OSX 应用程序?

cocoa - 核心数据实体中可本地化属性值的模型?

ios - FSCalendar - 我想在 longPressGesture 上选择日期

ios - TabBar 和 NavigationBar View 部分隐藏

iphone - iOS 无法以编程方式设置元素位置

objective-c - 发现运行应用程序的环境和相对路径

cocoa - Swift CocoaTouch 文档在哪里?

objective-c - 如何通过NSTask运行 "Purge"命令?