0

我有一个NSTextField关于一个的观点NSCollectionViewItem

当您单击一个项目时,NSCollectionViewItem该项目被选中。

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

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

最好的方法是什么?

4

2 回答 2

1

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

于 2012-02-24T19:22:06.557 回答
0

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

关键是让文本字段以不可选择的形式开始。文本字段将忽略鼠标单击文本字段并选择集合视图项。然后在集合视图项的 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];
    }
}

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

于 2013-03-20T04:02:32.660 回答