具体来说,我想让NSTokenField
忽略鼠标事件,因为我在NSTableCellView
中使用它只是为了以标记化的方式显示数据,而不允许任何编辑。
设置令牌字段的enabled = NO
是有效的,只是它会使令牌变灰并使文本难以读取。
设置令牌字段的editable = NO
与我想要的非常接近——它可以防止编辑,同时保留令牌字段的外观——只是当我将鼠标悬停在令牌上时,它们会亮起。如果我能阻止这种情况的发生,我会做生意的。
我怀疑我需要子类化一些东西并覆盖一些NSResponder
方法,但不太确定该怎么办。我尝试过子类化NSTokenField
并覆盖mouseEntered:
和mouseMoved:
,但都不起作用。
在尝试了很多东西之后,我终于根据Iulius Cæsar的建议实现了这一点。
诀窍是将NSTextField
子类化并覆盖trackingAreas
:
- (NSArray *)trackingAreas
{
return [NSArray array];
}
仅仅在创建时删除字段的跟踪区域是不够的,因为字段处于滚动视图中,有时会重新创建跟踪区域。