具体来说,我想制作NSTokenField
忽略鼠标事件,因为我在NSTableCellView
中使用它只是为了以标记化方式显示数据而不允许任何编辑。
设置令牌字段的enabled = NO
有效,但它会使令牌变灰并使文本难以阅读。
设置令牌字段的editable = NO
非常接近我想要的 - 它会在保留令牌字段的外观时阻止编辑 - 除了当我将鼠标放在令牌上时,它们会亮起。如果我可以阻止这种情况,我会做生意。
我怀疑我需要继承某些东西并覆盖一些NSResponder
方法,但不太确定该怎么做。我尝试了对NSTokenField
进行子类化并覆盖mouseEntered:
和mouseMoved:
什么都不做,但这也不起作用。
答案 0 :(得分:2)
在尝试了很多东西后,我终于根据IuliusCæsar的建议开始工作了。
诀窍是继承NSTextField
并覆盖trackingAreas
:
- (NSArray *)trackingAreas
{
return [NSArray array];
}
在创建字段时,只需删除字段的跟踪区域就不够了,因为字段位于滚动视图中,有时会重新创建跟踪区域。