在编辑之前获取NSTextField的字段编辑器

时间:2015-02-03 07:04:29

标签: cocoa

我有一个可调整高度的多行NSTextField。它使用字段编辑器(NSTextView)来获取文本容器的大小,使用NSLayoutManger的方法usedRectForTextContainer:。

但是,如果我在使用方法setStringValue:进行任何编辑之前最初设置了我的文本字段的字符串,则计算失败的高度,因为文本字段的字段编辑器为NULL(由fieldEditor:forObject:返回)

如何在编辑文本字段之前获取文本字段的字段编辑器?

2 个答案:

答案 0 :(得分:0)

不幸的是,在开始编辑文本字段后,您只能获得NSTextField的字段编辑器(NSTextView)。

摘自Apple文档:

  

文本系统自动从中实例化字段编辑器   当用户开始编辑NSControl的文本时,NSTextView类   对象,如文本字段

答案 1 :(得分:0)

这是一个旧线程,但是我只是遇到了同样的问题。就我而言,我需要在编辑器出现之前(在control:textShouldBeginEditing之前)修改用户将要编辑的字符串。因此,对于将来访问此线程的访客:

我的解决方案是将NSTextField子类化,然后重写成为firstFirstResponder:

- (BOOL)becomeFirstResponder
{
    self.stringValue = self.editableName;
    return [super becomeFirstResponder];
}