Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa NSTextField中的文本格式_Cocoa_Nstextfield_Text Formatting - Fatal编程技术网

Cocoa NSTextField中的文本格式

Cocoa NSTextField中的文本格式,cocoa,nstextfield,text-formatting,Cocoa,Nstextfield,Text Formatting,我有一个图形应用程序,它使用一个NSTextField实例进行就地文本编辑,这个功能很久以前就添加了,我从来没有理由检查它,但是,我最近收到一个报告:文本字段不允许文本格式。格式->文本菜单子项都已禁用,因此无法设置文本项的段落 问题:如何设置NSTextField以支持段落编辑?我确信它以前确实工作过,因为我有一些带有格式化文本的项目,自从应用程序诞生以来,NSTextField就在那里。我是否错过了系统/XCode更新 我的NSTextField是多行、可编辑的,允许编辑文本属性。如果将来有

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

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


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

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

  • 如果没有使用标尺,NSTextView拒绝应用格式(我想是最近的OS更新)
  • NSTextField本身不进行文本编辑,它使用由所属NSWindow驱动的共享NSTextView实例
  • NSV窗口中的默认文本编辑器不使用标尺
  • 这将导致在使用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
    
    瞧,格式化又回来了