我有一个NSTextField
关于一个的观点NSCollectionViewItem
。
当您单击一个项目时,NSCollectionViewItem
该项目被选中。
当您单击NSTextField
它时,它会获得焦点,但NSCollectionViewItem
不会选择文本字段后面的那个。
我想更改最后一个行为,以便文本字段获得焦点并且视图项也被选中。
最好的方法是什么?
我有一个NSTextField
关于一个的观点NSCollectionViewItem
。
当您单击一个项目时,NSCollectionViewItem
该项目被选中。
当您单击NSTextField
它时,它会获得焦点,但NSCollectionViewItem
不会选择文本字段后面的那个。
我想更改最后一个行为,以便文本字段获得焦点并且视图项也被选中。
最好的方法是什么?
我相信您必须继承 NSTextField 并覆盖 mouseDown 以将事件传递给 nextResponder (应设置为您的集合视图)
我还有一个包含 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];
}
}
这回答了上述问题,但显然,完整的解决方案还需要更多。