gpt4 book ai didi

objective-c - NSTable/OutlineView : Edit textfield in a row without selecting the row

转载 作者:行者123 更新时间:2023-12-03 17:10:31 25 4
gpt4 key购买 nike

上下文:

我有一个 NSOutlineView,它的作用类似于源列表,但不使用实际的源列表突出显示样式。 (想象一下 Finder 中的侧边栏。)

这个outlineView只有两个级别:1)“组”和2)“子项”。没有额外的嵌套 --- 再次,就像 Finder 中的源列表一样。

我想要什么:

我的 OutlineView 中的顶级“组”行是带有单个 NSTextFieldNSTableCellViews。我希望我的用户能够编辑此文本字段中的文本(以重命名该组)但不允许允许他们在 OutlineView 中选择整个组行。

到目前为止,我还没有找到一种方法来做到这一点。如果我阻止在 OutlineView 的委托(delegate)中选择组行,则无法编辑文本字段。当我允许选择组行时,我就可以像其他任何文本字段一样编辑文本字段。

除了子类化事物和自己处理鼠标事件之外,有没有一种简单的方法可以做到这一点?在编辑该行中的文本字段之前,必须始终选择 NSTableView 中的一行吗?

最佳答案

我认为使用 NSOutlineView 的自定义子类会起作用,在该子类中,如果建议的第一响应者在一个组中,您可以重写 -validateProposeFirstResponder:forEvent: 返回 true排。返回任何其他提议的第一响应者的 super 返回值。

您可以通过调用 -rowForView: 来确定建议的第一响应者位于哪一行。

查看此blog post来自编写基于 View 的表格 View 内容的 Apple 工程师。

关于objective-c - NSTable/OutlineView : Edit textfield in a row without selecting the row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32419287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com