gpt4 book ai didi

objective-c - 保持 NSTableCellView 处于焦点

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

我有一个包含 NSTableCellViewsNSTableView。当用户选择该行时,它使用默认选择颜色,如下所示: enter image description here

但是当用户开始在 NSTextView 中进行编辑时,NSTableCellView 会失去焦点并变为默认的灰色,如下所示: enter image description here

当用户在 NSTextView 中编辑时,我的 NSTableView 是否可以保持蓝色选择颜色?提前致谢。

最佳答案

您可以使用 NSTableRowView 的自定义子类,它始终保持其 emphasized 属性 true。您可以重写 getter 方法 -isEmphasized 以返回 true。当您这样做时,不妨重写 setter 方法 -setEmphasized: 以不调用 super。

如果您在 IB 中进行设计,则可以将自定义 View 添加到表列之一。在身份检查器中,将其类设置为 NSTableRowView 的自定义 subview 。另外,将其标识符设置为“NSTableViewRowViewKey”。这是一个特殊的标识符,导致 TableView 将其用作行 View 。

如果您想在代码中执行此操作,您可以实现 TableView 委托(delegate)方法 -tableView:rowViewForRow: 以返回自定义行 View 类的实例。按照该方法的文档,首先在 TableView 上调用 -makeViewWithIdentifier:owner: ,尝试从表的重用队列中获取行 View 。传递您喜欢的任何标识符。如果 TableView 返回 nil,请创建类的实例并将其 identifier 属性设置为您用于查找它的相同值。

但请注意,像这样更改突出显示颜色的含义可能会让您的用户感到困惑。例如,他们可能会浏览您的 UI,看到表格看起来有焦点,然后尝试使用箭头键来移动选定的行。他们会惊讶地发现他们已经在 TextView 中移动了插入点。

关于objective-c - 保持 NSTableCellView 处于焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32518923/

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