NSTextField后面的NSCollectionViewItem

时间:2012-02-24 18:44:40

标签: objective-c macos cocoa nscollectionview

我在NSTextField的视图中有一个NSCollectionViewItem

当您点击NSCollectionViewItem时,该项目已被选中。

当您点击NSTextField时,它会获得焦点,但文本字段后面的NSCollectionViewItem不会被选中。

我想更改此最后一个行为,以便文本字段获得焦点,并且视图项也会被选中。

最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

我相信您必须继承NSTextField并覆盖mouseDown以将事件传递给nextResponder(应该设置为您的集合视图)

答案 1 :(得分:0)

我还有一个包含NSTextField的NSCollectionViewItem。我正在尝试在Finder中重新创建Icon的文本标签的基本外观。我还没有完成它,但我到目前为止似乎回答了这个问题。

关键是让文本字段从不可选择开始。文本字段将忽略鼠标单击文本字段,并将选择集合视图项。然后在集合视图项的setSelection方法中,选择它时,将文本字段设置为可编辑。单击文本字段上的下一个鼠标将为其提供焦点。然后,当取消选择集合视图项时,将文本字段设置回不可选,并等待再次选择集合视图项。

-(void)awakeFromNib
{
    [self.textField setSelectable:NO];
}

-(void)setSelected:(BOOL)selected
{
    [super setSelected:selected];

    if (self.selected)
    {
        [self.textField setEditable:YES];
    }
    else
    {
        [self.textField setSelectable:NO];
    }
}

这回答了上述问题,但显然,完整解决方案需要更多。