问题标签 [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.
macos - NSTextStorageDelegate 的 textStorage(_,willProcessEditing:,range:,changeInLength:) 移动选择
我正在尝试实现一个语法着色文本编辑器,它还可以为您在新行的开头插入空格,或者用文本附件替换文本。
在先前的实现遇到撤消问题后再次仔细阅读文档后,似乎推荐的瓶颈是 NSTextStorageDelegate 的 textStorage(_,willProcessEditing:,range:,changeInLength:) 方法(它指出Delegates can change the characters or attributes.
,而didProcessEditing
说我只能更改属性)。这很好用,除了每当我实际更改属性或文本时,文本插入标记都会移动到我修改的任何文本范围的末尾(因此,如果我更改整行的样式,光标会移到行尾)。
有谁知道我错过了哪些额外的电话告诉 NSTextStorage/NSTextView 不要搞砸插入标记?此外,一旦我插入文本,我可能必须告诉它移动插入标记以说明我插入的文本。
注意:我已经看到修改 NSTextStorage 会导致插入点移动到行尾,但这假设我是 NSTextStorage 的子类,所以我不能在那里使用该解决方案(并且宁愿不子类 NSTextStorage,因为它是一个半-抽象子类,如果我将其子类化,我会失去苹果类的某些行为)。
ios - 如何将自定义 NSTextStorage 设置为从情节提要创建的 UITextView 对象?
我想为从情节提要创建NSTextStorage
的对象设置自定义。UITextView
如果真的需要,我可以考虑将UITextView
.
(我知道如果我UITextView
从代码中创建了一个对象,我将能够使用init(frame: CGRect, textContainer: NSTextContainer?)
构造函数。)
斯威夫特更可取。
swift - 按下键盘中的返回键时,UITextView 不记得字体样式
我在情节提要中有一个 UITextView (属性文本属性,并选中允许编辑属性,选中,可编辑)。当用户按下按钮时,我想“激活”粗体字体。因此,无论用户从那里输入什么,都必须以粗体显示。当按下返回键时,我想转到下一行,UITextView 应该记住所有文本的属性。问题是按回车键后,所有字符都变为粗体。
这是我在代码中的内容。
我试图实现的另一个例子是 stackoverflow 编辑效果。当我按下“{}”图标时,我处于“可编码模式”。当在键盘中按下 enter 时,它会恢复正常。
regularText 和 boldText 属性只是大小为 14 的系统字体。
ios - 在 UILabel 中一一打印属性字符串字符
我有一个自定义的 UILabel 类,它允许我将 tapGestureRecognizers 附加到字符串的特定部分。现在,我正在尝试为 UILabel 的文本设置动画,以一次打印一个字符。我的代码似乎一次向 TextStorage 添加一个字符,但文本同时显示,没有动画。一次向 TextStorage 添加一个字符是错误的方法吗?谢谢
macos - 有没有办法用 NSLayoutManager 过滤掉某些范围?
我们有一个NSTextView
可能包含大量文本的内容。我正在使用它来替换NSTableView
,它在生成数千行时太慢了。我们还有一个NSSearchField
,它用于将其谓词应用于表的数组控制器,以将其缩小到仅包含给定字符串的行。现在我想对文本视图做同样的事情。
我尝试将自定义属性应用到 中找到的范围NSTextStorage
,然后使用该NSLayoutManagerDelegate
方法-layoutManager:shouldGenerateGlyphs:properties:characterIndexes:font:forGlyphRange:
将未标记范围的字形属性设置为NSGlyphPropertyNull
. 这导致了许多错误:
它使该应用程序陷入困境。有没有更好的方法来过滤 textStorage 的显示并只绘制我们找到的段落?
目前,它必须在 10.10 上运行。呜呜。
swift - Swift 4:将数据从一个 NSViewController 传递到另一个的问题
在 macOS 应用程序中,我试图弹出一个表单,用户可以在其中输入文本。一旦用户添加了文本,他们点击保存关闭工作表并将文本添加到以前的页面 NSTextView。我已经尝试了很多变体,但老实说,我什至不确定如何在两个 ViewController 之间传递数据。我试过 PerformSegue,它似乎只是 iOS。我也尝试保存到 UserDefaults().string(forKey:"") 但似乎没有任何效果。最后,我遇到了一种方法来引用另一个 ViewController 类,然后从该类运行一个函数,但它似乎不起作用。这是我到目前为止的代码(如果缺少某些内容,我会尝试添加所有相关代码,让我知道)。
这是连接到要添加文本的视图的 ViewContoller。
这是我试图获取用户文本的 ViewController。
我可以在 saveNotesTemplate 中运行 print(notesTemplate!),它显示来自 NSTextView! 的正确文本。如果我在 func updateCaseTemplate() 上放了一个 Break,它永远不会到达它。任何帮助将不胜感激。我真的很想在这里学习,我已经用谷歌搜索了所有我能找到的解决方案。
最后,如果我这样做完全错误并且有更好的方法,请告诉我。
ios - NSTextStorage 里面有长文本。表现
我NSTextStorage
里面有一个长文本(比如一本书中有 500 页,在当前字体的设备上超过 9000 页)。我以这种方式为文本容器分发此文本:
问题是初始化所有这些容器等需要很长时间。我已经做了一些改进,比如从使用更改代码
while lastRenderedGlyph < layoutManager!.numberOfGlyphs {
和
lastRenderedGlyph = NSMaxRange(layoutManager!.glyphRange(for: textContainer))
cz 它的工作速度要慢得多。
那么,我还能做哪些其他改进?在 iPhone 7 上,启动大约需要 7 秒,在 iPhone 5s 上需要 20 秒 +
时间分析器显示,几乎所有时间都在获取 insertTextContainer 函数(addTextContainer)。
有什么建议么?
cocoa - NSTextView:复制列表项不包括粘贴时的列表格式
我有一个带有股票的基本 Mac 应用程序NSTextView
(Interface Builder 中的“富文档内容文本视图”),但我也在 TextEdit 中观察到了这种行为:
- 创建一个包含 3 个项目的新项目符号列表
- 选择并复制单个列表项
- 将列表项粘贴到同一文档中
→ 粘贴的项目失去了它的列表格式,即当我最后按回车时,不会自动添加新的列表项目。
→ 当我选择两个或更多列表项时,它可以正常工作。
这是一个快速视频:
其他意见
我在 Scrivener 中测试了相同的过程(我相信它也使用 NSTextView),在这里复制单个列表项会将正确的格式列表属性放在剪贴板上。
我检查了剪贴板,当我复制单个列表项时,确实,与 Scrivener 相比,RTF 内容有所不同。
NSTextView(复制一项):
Scrivener(复制一项):
请注意 Scrivener 如何在剪贴板上放置正确的格式。
NSTextView(复制了两项):
复制两个列表项时,它按预期工作。
我错过了什么?或者这是一个错误/功能,并且 Scrivener 人员正在他们的应用程序中解决这个问题(例如,检测何时复制单个列表项并修复其属性)?