NSTextField 中的文本格式

发布于 2024-09-16 06:13:00 字数 292 浏览 15 评论 0原文

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

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

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

I have a graphics app that uses a NSTextField instance for in-place text editing, this feature was added long time ago and I never had a reason to check it, however, I have recently received a report: text filed doesn't allow text formatting. Format -> Text menu subitems are all disabled, so there is no way to set the paragraph of a text item.

The question: how should I set up the NSTextField to support paragraph editing? I'm sure it did work before since I have some projects with formatted text and NSTextField was there since the app was born. Did I miss something with system/XCode updates?

My NSTextField is multiline, editable, allowed to edit text attributes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吃→可爱长大的 2024-09-23 06:13:00

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

  1. 如果没有使用标尺,NSTextView拒绝应用格式(我想是最近的操作系统更新)
  2. NSTextField本身不进行文本编辑,它使用共享的NSTextView实例驱动由拥有的 NSWindow
  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

瞧,格式化又回来了。

If someone will face this in the future, I can describe the problem in details:

  1. NSTextView refuses to apply formatting if there is no ruler used (with recent OS update, I suppose)
  2. NSTextField itself does no text editing, it uses shared NSTextView instance driven by the owning NSWindow
  3. Default text editor from the NSWindow doesn't use rulers.

This results disabled text formatting when using NSTextField.

Solution is to subclass the 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

And voila, formatting is back.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文