1

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

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

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

4

1 回答 1

3

如果将来有人会遇到这种情况,我可以详细描述该问题:

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

这会导致在使用 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

瞧,格式化又回来了。

于 2010-09-01T15:17:22.493 回答