问题标签 [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.
objective-c - NSLinguisticTagger 关于 NSTextStorage 内容的崩溃错误
我正在尝试使用 NSLinguisticTagger 来监视 NSTextStorage 的内容并根据用户键入的内容提供一些上下文信息。为此,我有一个 OverlayManager 对象,它连接了这种关系:
当编辑发生时,我确保捕获它并通知标记器(是的,我知道我与成员访问不一致,我对 Obj-C 生疏了,我稍后会修复它):
highlightEdits 消息将作业委托给“覆盖”对象池。每个都包含一个与此类似的代码块:
这就是问题所在 - enumerateTagsInRange 方法崩溃并显示一条消息:
如果我不链接到底层字符串的可变副本而是执行 a ,则不会发生此问题[[_storage string] copy]
,但显然我不想在每次要进行标记时都复制整个后备存储。这一切都应该发生在主运行循环中,所以我认为这不是线程问题。我枚举标签的 NSRange 存在于 NSTextStorage和NSLinguisticTagger 的字符串视图中。applyHighlightToRange 调用甚至不会向字符串添加属性,因为它甚至在到达该行之前就崩溃了。
我试图围绕该问题构建一个测试用例,但在这些情况下无法复制它:
该代码不会崩溃。
regex - 表情符号 NSTextStorage
我目前正在 iOS 上开发自定义 NSTextStorage,我需要检测一些主题标签 (#)、提及和 url...此时一切正常,但如果用户尝试从键盘输入表情符号字符,则不会显示,因为我使用的是 Helvetica 字体。
我正在使用常规表达式以这种方式检测主题标签、提及和网址:
哪里pattern
是查找主题标签、网址或提及的有效正则表达式模式。
是否有一些模式来检测表情符号字符?我应该使用什么模式,我已经尝试过这个(和许多其他的)[^\\x{1F601}-\\x{1F64F}\r\n]
但没有成功。
谢谢。
uitextview - 将多个 NSTextContainers 添加到 NSLayoutManager
我注意到您可以使用选择器将多个文本容器添加到 Objective-C 中的布局管理addTextContainer:(NSTextContainer *)textContainer
器。使用 TextKit,我只需要添加一个文本容器,当使用多个文本容器时,所有的 textviews 都会从链接到布局管理器的文本存储中填充相同的文本。我只是好奇,但我什么时候需要将多个文本容器添加到一个布局管理器?
ios - 在 NSTextContainer 中获取文本
我有一个带有 NSString 内容的 NSOrderedSet 段落。遍历所有内容,创建一个大字符串并赋予 NSTextStorage。但是所有的段落都丢失了。
下面的代码允许我计算页面并在页面中显示内容。但我想将内容分成段落并知道用户何时点击特定段落。
如何使用 NSTextStorage 将内容不显示为单个大字符串,而是显示为一组较小的文本块?注意:我使用 UIPageViewController 来显示内容,所以我还需要知道每页的段落数。
谢谢。
ios - How to reset attributes in NSTextStorage
I am trying to a text parser for iOS. I have some syntax to bold, italic, highlight, etc. I have set it up in a UITextView
with an instance of NSTextStorage
to monitor the changes and set the correct attributes. If I preload the UITextView
with text it works great.
However when I'm typing and let's say I type something like this
It works great it highlights it yellow and everything is fine. However if I place the cursor right next to the last ==
and starting typing to create something like this:
Then the rest of the text also gets highlighted.
I know the regex I use is not the problem because if I pre fill the UITextView
with that text it parses it correctly.
Question: So what I need help with is resetting the the current cursor position to no text attributes. I'm not sure how to do that because if it is at the end of the text view I can't go forward because then I get an NSRangeException
.
Thanks!
ios - iOS 8 中的 UITextView 崩溃,带有包含表格的属性字符串
在 iOS 8(甚至可能在 iOS 7/7.1)NSAttributedString
中,iOS 添加了呈现文本表格的能力。此 API在 OS X 上是公开的,但在 iOS 上不公开。但是,可以通过将包含表格的 HTML 传递到-[NSAttributedString initWithData:options:documentAttributes:error:]
.
属性字符串已正确创建,但是当我尝试使用 a 呈现字符串时UITextView
,会引发此异常:
这是回溯:
我认为这是 Apple 的一个错误,并试图创建一个最小的项目来重现该问题,但无法这样做。在我的测试项目中呈现完全相同的属性字符串效果很好,但在我的应用程序中仍然无法正常工作,这让我相信也许我做错了什么。在没有表格的情况下渲染属性字符串可以正常工作,这是渲染表格特有的问题。有没有其他人遇到过类似的问题?
ios - 如何替换 NSLayoutManager 的文本存储
我正在尝试构建一个具有 UITextView 的表格视图单元格。为了重用这个表格视图单元格,我为布局管理器设置了一个新的文本存储。但是将布局管理器添加到新的文本存储中并不会改变文本视图的文本存储。
布局管理器、文本容器、文本视图设置如下:
当我“配置”表格视图单元格时,我将布局管理器添加到新的文本存储中:
到目前为止,这有效,新文本将正确显示。但是当我重用单元格(将布局管理器添加到另一个文本存储)并获取文本视图的大小时,通过...</p>
… 尺寸错误。在查看了文本视图的属性后,我发现它仍然指向错误的文本存储。
这感觉真的很奇怪。我是否需要重新设置整个堆栈(布局管理器、文本容器、文本视图)?
如果是,我将需要启动一个新的文本视图并更新布局约束,这将非常昂贵。
macos - Tracking modified state with NSTextStorage and UNDO
I have an NSTextView/NSTextStorage combination and I want to track the 'modified' state of the text storage.
I could simply watch for changes to the text and update my 'modifiedDate' variable - problem is I need UNDO to work also - and UNDO should also undo the modifiedDate.
If I update my modifiedDate variable each time the text changes then it works - but UNDO on the TextView will be one character at a time (not desirable.)
I did try looking for undoManagerWillCloseUndoGroupNotification and updating my modifiedDate there, but I get the same effect (single character undo) I thought it might 'slip' the modifiedDate undo inside the TextView undo group - but it appears not.
This is either one of those things that just can't be done - or it's simple - can someone put me out of my misery?
Thanks
ios - 将光标放在新图像的末尾而不是之前
我正在创建一个应用程序,用户可以在其中一起在 UITextView 中添加图像和文本并与朋友分享。StackExchange
感谢其他用户,我成功地将图像和文本添加在一起。我现在面临光标定位的一个小问题。
当我插入文本时,光标会按预期移动。但是,当我添加图像时,光标仍保留在图像后面(即最后插入文本的结尾)。下面是我的代码。如何将光标移动到新插入图像的末尾,以便新添加的文本/图像附加到右侧而不是左侧。
编辑:我已经找到了问题的解决方案。
我只需要selectedRange.location
像这样添加一个:textView.selectedRange.location += 1
cocoa - 如何使用显式 NSLayoutManager、NSTextStorage、NSTextContainer 以编程方式设置 NSTextView?
按照苹果文档,我试图NSTextView
通过它的两个构造函数方法设置一个简单的。
我将下面的代码放在viewDidAppear
内容视图的视图控制器的方法中。textView 是 的一个实例NSTextView
,frameRect 是内容视图的框架。
以下 Swift 代码有效(给了我一个可编辑的 textView 并在屏幕上显示文本):
以下内容不起作用(文本视图不可编辑且屏幕上未显示文本):
我在第二个例子中做错了什么?我正在尝试遵循 Apple 的“Cocoa Text Architecture Guide”中给出的示例,他们在其中讨论了NSTextView
通过显式实例化其帮助对象网络来设置一个。