使用可编辑文本区域制作自定义NSView所需的最低实现是多少?我假设NSTextFieldCell可用于此。我已成功在视图中绘制单元格(这很简单),但使其可编辑似乎需要在视图和单元格之间进行更复杂的协调。是否有可用的示例代码?
更新。我应该明确表示,我的长期目标是在同一视图中拥有更多可编辑的文本区域。 AFAIU在这种情况下最好使用细胞,因为它们比完整视图更轻。我更新的问题是:使用适当的NSCell制作带有可编辑文本区域的自定义NSView所需的最低实现是什么?
答案 0 :(得分:1)
使用可编辑文本区域制作自定义NSView所需的最低实现是什么?
请记住,NSView(自定义或其他)可以包含其他NSView,NSTextField是一种NSView。
如果您不希望自定义视图类之外的代码知道文本字段,并且可能不应该知道,则自定义视图可以创建文本字段并将其作为私有实现细节添加到自身。要做到这一点,只需在自定义视图类的@interface
中公开文本字段(除了实例变量声明,这是不可避免的)。
当然,自定义视图不应该在它放置文本字段的任何位置绘制。它可以在那里绘制,但文本字段将覆盖它。
我假设可以使用NSTextFieldCell。
是的,如果您不介意重新实现NSTextField。添加NSTextField作为视图的子视图要容易得多。
答案 1 :(得分:1)
如果要创建文本字段网格(可能包含动态数字),请使用NSTextFieldCells的NSMatrix。当然,您可以将NSMatrix添加为自定义视图的子视图。
答案 2 :(得分:1)
如果要编辑文本单元格,只需在单元格对象上调用editWithFrame:inView:editor:delegate:event:
即可。此方法需要启动编辑的NSEvent
,因此您只能从事件处理程序中调用它。还有selectWithFrame:inView:editor:delegate:start:length:
用于设置字段编辑器的选择。如果需要从事件处理程序外部开始编辑,可以使用此方法。
用户完成编辑后,您需要在单元格上调用endEditing:
。