保持 NSTableCellView 的焦点
Keep NSTableCellView in focus
我有一个 NSTableView
包含 NSTableCellViews
。当用户选择行时,它使用默认选择颜色,如下所示:
但是当用户在 NSTextView
中开始编辑时,NSTableCellView
失去焦点并变成默认的灰色,如下所示:
当用户在 NSTextView
中编辑时,我的 NSTableView
可以保持蓝色选择颜色吗?提前致谢。
您可以使用 NSTableRowView
的自定义子 class,它始终保持其 emphasized
属性 为真。您可以将 getter 方法 -isEmphasized
覆盖为 return true。当你这样做的时候,不妨覆盖 setter 方法 -setEmphasized:
不调用 super.
如果您在 IB 中进行设计,则可以将自定义视图添加到 table 列之一。在身份检查器中,将其 class 设置为 NSTableRowView
的自定义子视图。此外,将其标识符设置为 "NSTableViewRowViewKey"。这是一个特殊的标识符,导致 table 视图将其用作行视图。
如果您想在代码中执行此操作,您可以将 table 视图委托方法 -tableView:rowViewForRow:
实现到 return 自定义行视图 class 的实例。按照该方法的文档并在 table 视图上调用 -makeViewWithIdentifier:owner:
,首先,尝试从 table 的重用队列中获取行视图。传递您喜欢的任何标识符。如果 table 视图 returns nil
,创建您的 class 的实例并将其 identifier
属性 设置为与您相同的值用来查找它。
不过请注意,像这样更改突出显示颜色的含义可能会使您的用户感到困惑。例如,他们可能会瞥一眼您的 UI,发现 table 看起来有焦点,然后尝试使用箭头键移动所选行。他们会惊讶地发现他们已经在文本视图中移动了插入点。
我有一个 NSTableView
包含 NSTableCellViews
。当用户选择行时,它使用默认选择颜色,如下所示:
但是当用户在 NSTextView
中开始编辑时,NSTableCellView
失去焦点并变成默认的灰色,如下所示:
当用户在 NSTextView
中编辑时,我的 NSTableView
可以保持蓝色选择颜色吗?提前致谢。
您可以使用 NSTableRowView
的自定义子 class,它始终保持其 emphasized
属性 为真。您可以将 getter 方法 -isEmphasized
覆盖为 return true。当你这样做的时候,不妨覆盖 setter 方法 -setEmphasized:
不调用 super.
如果您在 IB 中进行设计,则可以将自定义视图添加到 table 列之一。在身份检查器中,将其 class 设置为 NSTableRowView
的自定义子视图。此外,将其标识符设置为 "NSTableViewRowViewKey"。这是一个特殊的标识符,导致 table 视图将其用作行视图。
如果您想在代码中执行此操作,您可以将 table 视图委托方法 -tableView:rowViewForRow:
实现到 return 自定义行视图 class 的实例。按照该方法的文档并在 table 视图上调用 -makeViewWithIdentifier:owner:
,首先,尝试从 table 的重用队列中获取行视图。传递您喜欢的任何标识符。如果 table 视图 returns nil
,创建您的 class 的实例并将其 identifier
属性 设置为与您相同的值用来查找它。
不过请注意,像这样更改突出显示颜色的含义可能会使您的用户感到困惑。例如,他们可能会瞥一眼您的 UI,发现 table 看起来有焦点,然后尝试使用箭头键移动所选行。他们会惊讶地发现他们已经在文本视图中移动了插入点。