问题标签 [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 回答
5697 浏览

ios - 在我以编程方式实例化的 UITextView(使用 NSTextContainer 初始化)中,.text 属性始终为 nil

[在底部更新了解决方案和工作代码]

在 -viewDidLoad 我分配,initWithFrame:

将 myTextView 添加到子视图

设置一些基本属性(对齐方式、背景颜色、文本颜色等)

设置默认文本

.text 没有出现。myTextView 出现(由背景颜色表示),设置断点,它有一个框架,内存等。一切看起来都正确。myTextView 看起来不错,但 .text 为零。我改变它,设置它,更新它。不管 .text 保持为零。

我一遍又一遍地阅读文档。没有提到我没有做的任何事情。我不知所措。帮助。

在@interface MyController()...

过去一切都是(弱),但我把它调高(强)以防万一。没有骰子。

在 viewDidLoad...

[更新:解决方案]

当使用 NSTextContainer 分配/初始化 UITextView 时,您还需要分别初始化 NSLayoutManager 和 NSTextStorage 以使 .text 粘贴。

这是更新的工作代码

0 投票
2 回答
143 浏览

xamarin.ios - Monotouch NSTextStorage 实现如何

我正在尝试将一些目标 c 代码移植到 c# 头文件包含

和实施是这样的

但我无法理解

部分。我认为这是一个抽象属性或类似的东西,但我不知道如何在 c# 上覆盖它,有人知道那是什么吗?

0 投票
3 回答
2826 浏览

ios - How to clear a UITextView with a custom NSTextStorage? [iOS7 only]

I'm currently trying to create an SMS-like screen, where the user can write some text and send it to other users. Everything goes as expected until I try to clear my text view and encounters a crash. I've been trying to find a way around this issue, but I just cannot find enough documentation online. So here it is, and hopefully one of you will know a fix for this.


The implementation

My UITextView is a subclass of Peter Steinberger's implementation for iOS7, and I use it with a custom NSTextStorage subclassed as showed in objc.io's 'Getting to Know TextKit' and especially that source code in order to highlight usernames in the message.

In my ViewController, I configure my text storage like this:

self.textStorage = [[[MyCustomTextStorage alloc] init] autorelease]; [self.textStorage addLayoutManager:self.textView.layoutManager];

And then in my TextView's delegate method:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

I store the input in my custom TextStorage:

[self.textStorage.string stringByReplacingCharactersInRange:range withString:text];

The crash

I can retrieve my text via self.textStorage.string, and then I clear my text view by replacing characters in the range of the input string. This works quite well, but when I try to set my TextView as the first responder again, the application crashes.

Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSCFString _getBlockStart:end:contentsEnd:forRange:stopAtLineSeparators:]: Range {5, 0} out of bounds; string length 0'

The range mentioned is the range of my previously cleared string so it looks like I can clear the display, but my TextStorage / TextView is keeping a reference to the first edited range / string.


Any idea on what could be causing this crash and how to resolve it? Thanks for your attention; at this point any help is appreciated, so please feel free to post if you have some piece of advice. :)

0 投票
0 回答
698 浏览

objective-c - 从 NSTextStorage 中删除字符范围,但保持对其余部分正确着色?

我想将 NSTextView_A 文本的相同颜色应用到另一个 NSTextView_B 文本,只有 NSTextView_A 的文本片段。

我使用 NSLayoutManagerDelegate 将 NSTextView_A 文本着色应用到 NSTextView_B 和

然后我删除了 NSTextView_B 文本中的一个字符范围:

更改文本存储中所述

现在的问题是,字符被正确删除,但是在不考虑新范围的情况下应用了删除前文本的颜色。

例如: NSTextView_A 文本在 0-253 范围内是蓝色的,例如绿色后面的所有内容。在我删除 NSTextView_B 文本(0-253)中的字符后,生成的文本是蓝色的,然后是绿色的,但不仅仅是绿色。

我怎样才能使着色尊重新的文本片段?

0 投票
0 回答
128 浏览

macos - NSTextView 在打字过程中滞后

我有两个具有共享自定义 NSTextStorage 子类的 NSTextView。文本视图相互镜像。这工作正常,直到我按回车。然后第二个文本视图开始滞后,甚至不显示任何新输入。无论我输入哪个文本视图,都会发生这种情况。

如何强制第二个 textview 与第一个 textview 保持同步?

这是我的 NSTextStorage 子类。

0 投票
1 回答
516 浏览

ios - NSTextStorage 的备用后备存储

每个示例都将 NSMutableAttributedString 显示为“后备存储”,用于保存与查看/编辑文本相关的文本和属性。我如何使用替代品,例如 std::string 或者数据库中的内容。作为一个测试,我创建了一个子类并对其进行硬编码,以便在我覆盖所需的方法时返回默认值。但是,当我在 iPhone 5 设备上运行它时,它只会显示黑屏,直到我按下 Home 按钮。系统不断调用attributesAtIndex:location:effectiveRange:range:,CPU使用率上升到100%,App从不做任何事情。它确实调用了一次 string: 方法,但随后只是继续调用 attributesAtIndex:location:effectiveRange:range

这个例子:

以下是它的设置方式:

我理解 NSTextStorage 是一个类集群,这似乎意味着它是一个抽象类工厂。我真的不明白为什么我不能使用另一个“后备商店”。我的计划是使用 std::string (因为我的数据来自哪里),然后返回一个常量属性样式(如上面的代码)。我一直在阅读有关 NSTextStorage、NSLayoutManager、NSTextContainer 和 NSTextView 的所有内容,包括 mac OS X 文档(即使我在 iOS 上这样做)。谢谢!

0 投票
1 回答
2127 浏览

download - 替换 NSMutableattributedString 上的 NSTextattachement 图像

我正在构建一个带有文本和图像的 UITextView(子类化 NSTextstorage 以显示我的内容)

我有带有图像 URL 的文本内容。所以我的问题是,如果没有缓存,我需要下载所有图像。

所以我想先插入一个占位符图像,下载图像,然后用下载的图像替换占位符图像。

这就是我的工作方式。

首先,我通过用这个标签替换所有 url 来用图像 url 格式化我的文本:

然后我使用正则表达式来获取所有这些标签。

我正在测试是否有缓存的图像。如果没有,我提取所有 url,下载它们并缓存它们。

我创建了一个 NSObject 类 ImageCachingManager 并声明了一个在下载图像时调用的委托方法:

像这样,我很难使用委托方法获得的图像的 url 在我的 NSTextstorage 属性字符串中搜索匹配的 url,并用下载的图像替换当前的 NSTextattachement 图像。

但是我不知道该怎么做...

感谢帮助 !

0 投票
1 回答
286 浏览

ios - 在 iOS 中将 textstorage 与 textcontainer 一起使用时,UITextView 变得无法选择

我正在尝试显示NSAttributedStringUITextView. 我用过NSTextStorageNSLayoutManagerNSTextContainer。但是发生的事情UITextView变得无法选择。当我尝试选择时,我找不到任何选择或复制粘贴选项。

我给了textview.selectable=YES

我使用了具有相同文本存储的多个文本视图。是这个问题的原因吗??还是我必须启用其他任何东西???

0 投票
1 回答
158 浏览

ios - 使用 NSTextStorage 读取 Word 文件

我以为我在文档中读到 NSTextStorage 可以读取 Word 文件。我这样做了:

我收到以下错误:

我在这里错了,Word文档真的不能被阅读吗?还是有其他问题?

我应该补充一点,阅读与 RTF 相同。我的经历是要么无法读取 DOCX,要么必须以某种方式设置属性。不幸的是,苹果省略了该文档。

0 投票
1 回答
680 浏览

ios - 如何向空的 TextView 添加属性?

在我的应用程序中,我有一个 UITextView,在 inputAccessory 视图中,我有一些按钮可以让用户输入粗体、斜体等。

当我点击粗体按钮时,我正在添加粗体字体的属性,但 UItextView 中没有文本,因此所选范围始终为 (0,0)。我应该使用什么作为选定的范围,以便我可以用粗体输入即将到来的文本。当我再次点击粗体按钮时,它应该取消粗体字体属性并让用户再次输入普通字体。这是我正在使用的代码: