如何使NSControl(例如,NSTokenField)忽略鼠标事件



具体来说,我想让NSTokenField忽略鼠标事件,因为我在NSTableCellView中使用它只是为了以标记化的方式显示数据,而不允许任何编辑。

设置令牌字段的enabled = NO是有效的,只是它会使令牌变灰并使文本难以读取。

设置令牌字段的editable = NO与我想要的非常接近——它可以防止编辑,同时保留令牌字段的外观——只是当我将鼠标悬停在令牌上时,它们会亮起。如果我能阻止这种情况的发生,我会做生意的。

我怀疑我需要子类化一些东西并覆盖一些NSResponder方法,但不太确定该怎么办。我尝试过子类化NSTokenField并覆盖mouseEntered:mouseMoved:,但都不起作用。

在尝试了很多东西之后,我终于根据Iulius Cæsar的建议实现了这一点。

诀窍是将NSTextField子类化并覆盖trackingAreas:

- (NSArray *)trackingAreas
{
    return [NSArray array];
}

仅仅在创建时删除字段的跟踪区域是不够的,因为字段处于滚动视图中,有时会重新创建跟踪区域。

相关内容

  • 没有找到相关文章

最新更新