问题标签 [nstextstorage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1997 浏览

macos - 修改 NSTextStorage 导致插入点移动到行尾

我有一个NSTextView子类作为它的NSTextStorage代表。我正在尝试做两件事:

  1. 以某些方式突出显示文本
  2. 评估文本,然后将答案附加到文本视图。

我在两种不同的方法中执行此操作,均由- (void)textStorageWillProcessEditing:(NSNotification *)notification委托回调调用。

我可以很好地突出显示语法,但是在附加我的答案时,插入点会跳到行尾,我真的不知道为什么。我的评估方法如下所示:

这样做会很好地附加我的结果,但问题是,如前所述,插入点会跳到末尾。

我试过了:

  1. 将上述调用包装在[textStorage beginEditing]和中-endEditing
  2. 在更改文本存储之前保存选择范围(即插入点),以便之后我可以重置它,但没有骰子。

我这样做对吗?我正在尝试以最简单的方式做到这一点,而且我也不确定这是否是进行解析/突出显示的理想场所。文档让我相信这一点,但也许这是错误的。

0 投票
1 回答
705 浏览

logging - NSTextView、NSTextStorage 和循环日志?

我在应用程序窗口中有一个 NSTextView,它显示了串行端口的传入数据日志。我在日志到达应用程序时将文本附加到日志中:

例如,我想将文本限制为 1000 行,以免应用程序崩溃,因为它会无限期地运行。

现在我有一个临时解决方案,基于每周清除日志的 NSTimer,它可以工作,但我更喜欢实施一个聪明的方法,只是限制文本大小并创建一个循环日志。

任何的想法 ?也许使用方法 insertAttributedString ?

问候,琼

0 投票
1 回答
3588 浏览

cocoa - 在 NSTextView 中替换 NSTextStorage 的正确方法?

我正在制作一些文本查看器应用程序。目前我需要非常频繁和精确的线路处理能力,所以我想继承NSTextStorage类。但我找不到任何方法将新的文本存储设置为NSTextView. 我能找到的唯一方法是

方法。但令人困惑的是这是否是我想要的。因为它似乎只是替换链接的 NSLayoutManagers 而不是 NSTextView 的文本存储。

我也考虑过继承 NSTextView 和覆盖-textStorage方法,但是如果该类不是为子类设计的,它将产生未定义的结果。

有人尝试在 NSTextView 上使用自定义 NSTextStorage 吗?我怎样才能做到这一点?或者这是设计禁止的?

0 投票
0 回答
334 浏览

objective-c - NSTextStorage、Core Data 和 NSUndoManager - 如何跟踪更改?

想象一个具有 type 瞬态属性的托管对象NSTextStorage。这会在保存时存档到二进制NSData对象中。在编辑时,我交换了所有的更改textStorageNSTextView因此所有更改都直接进入文本存储。这样,我可以更新与某些文本位置相关的其他托管对象,而不会使上下文处于不一致状态,并且使用相同文本存储的其他 UI 元素会立即更新。

问题是托管对象上下文undoManager不知道如何处理撤消/重做时的文本存储。我认为这是因为撤消操作是由文本视图处理的。

所以我想我可以在每次更改时序列化/存档文本存储,并用未存档的内容替换文本存储内容。即使是较长的文本文档,我也已经对其进行了测试,这在 Mac 上并不是真正的瓶颈。但是如何让撤消管理器使用它呢?或者有没有完全不同的方法让它工作。

我在http://cl.ly/3B1P0r2P1i0m上放了一个示例项目

0 投票
2 回答
355 浏览

objective-c - 如何让 NSTextView 使用特定的 NSTextStorage?

有没有办法将 NSTextView 的textStorage属性设置为我自己的 NSTextStorage?您可以自定义 NSTextContainer,所以有没有办法做这样的事情:

如果没有,有没有办法在文本视图实例化后换出默认的文本存储?这需要通过继承 NSTextView 来完成吗?

0 投票
1 回答
197 浏览

iphone - 是否可以在 iPhone 应用程序的 UITextView 中为某些单词着色?

我正在尝试在 iPhone 应用程序的 UITextView 中为某些单词着色,但出现错误,我开始认为这可能是不可能的......我正在使用这段代码:

我收到了这个错误:

-[UITextView textStorage]:无法识别的选择器发送到实例 0x1f26ca00 2013-10-16 20:59:41.711 My App[19795:913] *由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[UITextView textStorage]:无法识别选择器发送到实例 0x1f26ca00'

我在 Mac 应用程序中使用相同的代码,它工作正常......有人知道我做错了什么还是它根本无法在 iPhone 应用程序中工作?感谢您的帮助...马西

0 投票
3 回答
1769 浏览

ios - 在 NSTextStorage NSMutableAttributedString 末尾设置新字体

我正在编写一个使用 UITextView 处理富文本编辑的应用程序。它使用 NSTextStorage 为部分字符串设置新属性。但是,如果用户想要在字符串末尾或字符串中间更改字体或字体大小以获取新的文本样式(换句话说,当传递给的范围setAttributes:range:的长度为 0 时)此无法完成,因为您无法设置范围为 0 的属性。所以基本上,如何为 UITextView 中的光标位置设置新的 UIFont?

我的 NSTextStorage 子类中的相关代码:

0 投票
1 回答
1258 浏览

objective-c - 在 Mavericks 上子类化 NSTextStorage 时与范围相关的异常

我的应用程序使用我自己的子类,NSTextStorage并且在 Mavericks 之前一切正常。即使使用最精简的版本,只要我用它初始化一个文本视图,我就会得到一个异常。我阅读了文档并查看了如何扩展 NSTextStorage?. 希望你们中的一个人知道苹果是否改变了某些东西,或者我做错了什么。

您可能需要帮助我的信息:

例外:

TextViewCheck[12542:303]:异常 *** NSRunStorage (0x6000000a4200),_replaceElements():替换范围 {0, 929} 超出当前运行存储大小 928。在排版布局管理器 NSLayoutManager 期间引发 NSLayoutManager:0x100106a80
1 个容器,文本支持有 928字符选择字符范围 {0, 0} 亲和力:上游粒度:字符标记字符范围 {0, 0} 目前持有 928 个字形。
字形树内容:928 个字符,928 个字形,1 个节点,64 个节点字节,960 个存储字节,1024 个总字节,每个字符 1.10 个字节,每个字形 1.10 个字节 布局树内容:928 个字符,928 个字形,0 个铺层字形,0 个铺层行片段,1 个节点,64 个节点字节,0 个存储字节,64 个总字节,每个字符 0.07 个字节,每个字形 0.07 个字节,每个铺设线片段 0.00 个铺设字形,每个铺设线片段 0.00 个字节,字形范围 {0 928}。无视...

回溯

编码:

TTTSimpleTextStorage.m

我如何使用它

这是在 MainWindowController - awakeFromNib 中,窗口 IBOutlet 有一个 NSView 作为名为container的子视图和一个随机字符串string1

0 投票
1 回答
175 浏览

cocoa - 删除后插入点未显示在正确位置

所以我试图让我的 NSTextView 语法高亮一些降价。这是它的样子:

在此处输入图像描述

但是当我按下删除键时,会发生这种情况:

在此处输入图像描述

有谁知道发生了什么?

在我的- (void)textStorageDidProcessEditing:(NSNotification *)notification代表中,我正在执行文本的完整解析,并且我有一个包含以下条目的字典:

我应用格式的方式是:

我发现如果我开始向整个字符串添加属性,它会导致这个错误,虽然上面的代码很好地处理了块级元素(即当样式应用于整行时),但如果属性在行内。

一些更有趣的细节:

  • 插入文本时插入符号没有任何问题

  • 如果您删除该行的第一个(也是唯一一个)字符,使其成为空行,则插入点将位于正确的位置

  • 插入符号的列(X 轴)位置始终是正确的,它只有 Y 轴值搞砸了。

  • 在大多数情况下,如果您在应用最后一个样式的位置之前在文档中进行编辑,则不会出现此问题,下面是一个示例。在这里,我刚刚删除了“g”,但插入符号很好。因此,唯一的问题是在最后一个文本内或之后进行编辑。 在此处输入图像描述

抱歉这个问题有点长,但请询问我是否遗漏了任何内容。感谢您的帮助!

0 投票
1 回答
4695 浏览

ios - 为 NSTextStorage 子类设置 viewController 的 layoutManager 时字形索引无效

我的目标是使用 TextKit 斜体,设置某些单词的文本大小等。

首先,我只是想突出显示文本字符串中的一个字符。作为 TextKit 的新手(并且对于一般的编程来说如实说),我正在关注 obc.io 问题 #5 的语法高亮主题。

当使用我创建的 UITextView 内置的 NSLayoutManager 时,我的文本出现在屏幕上,没有抛出异常。当我在视图控制器(如下)中将 UITextView 设置为 NSTextStorage 子类的布局管理器时,我收到无效字形索引异常的错误。

控制台输出如下:

我多次阅读 Apple 的 Text Programming Guide 并认为我了解文本系统是如何建立的,但不知道为什么我的字形数会超过字形数......

我为我的 viewController 和 NSTextStorage 子类创建了要点,分别在这里这里