1

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

设置令牌字段的enabled = NO工作,除了它使令牌变灰并使其难以阅读文本。

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

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

4

1 回答 1

2

在尝试了很多东西之后,我终于根据 Iulius Cæsar 的建议让它工作了。

诀窍是子类化NSTextField和覆盖trackingAreas

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

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

于 2012-03-26T18:45:02.877 回答