我有一个可调整高度的多行NSTextField。它使用字段编辑器(NSTextView)来获取文本容器的大小,使用NSLayoutManger的方法usedRectForTextContainer:。
但是,如果我在使用方法setStringValue:进行任何编辑之前最初设置了我的文本字段的字符串,则计算失败的高度,因为文本字段的字段编辑器为NULL(由fieldEditor:forObject:返回)
如何在编辑文本字段之前获取文本字段的字段编辑器?
答案 0 :(得分:0)
不幸的是,在开始编辑文本字段后,您只能获得NSTextField的字段编辑器(NSTextView)。
摘自Apple文档:
文本系统自动从中实例化字段编辑器 当用户开始编辑NSControl的文本时,NSTextView类 对象,如文本字段
答案 1 :(得分:0)
这是一个旧线程,但是我只是遇到了同样的问题。就我而言,我需要在编辑器出现之前(在control:textShouldBeginEditing之前)修改用户将要编辑的字符串。因此,对于将来访问此线程的访客:
我的解决方案是将NSTextField子类化,然后重写成为firstFirstResponder:
- (BOOL)becomeFirstResponder
{
self.stringValue = self.editableName;
return [super becomeFirstResponder];
}