NSTextField中的文本格式

时间:2010-08-27 12:50:13

标签: cocoa nstextfield text-formatting

我有一个图形应用程序,它使用NSTextField实例进行就地文本编辑,这个功能很久以前就添加了,我从来没有理由检查它,但是,我最近收到了一个报告:text filed doesn' t允许文本格式化。格式 - >文本菜单子项全部被禁用,因此无法设置文本项的段落。

问题:如何设置NSTextField以支持段落编辑?我确定它之前有用,因为我有一些带有格式化文本的项目,并且自应用程序诞生以来NSTextField就在那里。我错过了系统/ XCode更新的内容吗?

我的NSTextField是多行的,可编辑的,允许编辑文本属性。

1 个答案:

答案 0 :(得分:3)

如果有人将来会面对这个问题,我可以详细描述这个问题:

  1. 如果没有使用标尺,NSTextView拒绝应用格式(我猜想最近的操作系统更新)
  2. NSTextField本身不进行文本编辑,它使用由拥有的NSWindow驱动的共享NSTextView实例
  3. NSWindow的默认文本编辑器不使用标尺。
  4. 使用NSTextField时,此结果禁用了文本格式。

    解决方案是子类化NSWindow:

    @implementation MyWindow
    
    - (NSText *)fieldEditor:(BOOL)createWhenNeeded forObject:(id)anObject
    {
        NSText* text = [super fieldEditor:createWhenNeeded forObject:anObject];
        if ([text isKindOfClass:[NSTextView class]])
            [(NSTextView *)text setUsesRuler:YES];
        return text;
    }
    
    @end
    

    瞧,格式化又回来了。