问题标签 [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 - 临时 NSTextView 调用自定义 NSColor 子类,在后台线程调用 UI
我正在后台线程中测量文本块的高度。出于某种原因,如果在应用程序刚刚启动时发生这种情况,线程会调用DynamicColor
需要在主线程中调用的 NSColor 子类,因为它会检查应用程序是否处于暗模式。
后台线程正在运行的类不应该对 有任何引用DynamicColor
,但是,当NSTextStorage
分配 时,会调用 DynamicColor。它会导致从后台任务进行 UI 调用时出错。
我不知道如何NSTextStorage
调用它不知道存在的某个类。只有我的NSDocument
子类引用了它,其他类都不应该不知道它。
调用后台线程NSDocument
:
后台线程遍历包含字符串数据的大量元素并计算它们的高度。
调用DynamicColor
发生在NSTextStorage
分配时。通过检查我们是否在 中的主线程上,我能够避免崩溃DynamicColor
,但我担心错误的原因。
DynamicColor
是一个NSColor
子类。以下是相关部分:
我尝试将纯色设置NSColor
为NSTextContainer
前景色,但没有帮助。每次运行应用程序时都不会出现该错误,并且在测试环境中我无法重现该问题。此外,这只是第一次分配文本容器时发生这种情况。
ios - NSLayoutManager numberOfGlyphs 总是显示 0,Swift
我正在尝试在每个页面上使用所需的属性文本创建带有 UITextView 的多页 PDF。但是,一旦应用程序被存档并通过 TestFlight 分发以进行测试,当我遇到问题时。
下面是我用来生成多页的示例代码,
如果在从 Xcode 构建时在模拟器或设备上运行,这非常有效,但是一旦应用程序分发,layoutManager.numberOfGlyphs
即使我 print() 它显示的布局管理器,它也总是返回 0,
我是否错过了一些愚蠢的事情,或者是否有我不知道的错误?我一生都无法理解为什么它不起作用!
感谢可以给予的任何帮助。
macos - 如何在 NSTextInputClient 中检查输入法的状态?
从文档中,我可以看到输入上下文会将以下方法之一发送到文本视图。
insertText:replacementRange:
setMarkedText:selectedRange:replacementRange:
doCommandBySelector:
在我的测试用例中,当启用输入法时,keyDown
可以触发setMarkedText:selectedRange:replacementRange
,但是如果我一直删除markedText
到最后一个字符,那么输入法将被停用而不会触发上述任何方法。
是否有类似停用的钩子,以便在输入法停用后我可以立即执行某些操作?
swift - 如何更改 NSTextStorage 中仅未来文本的属性?
再会,
我想知道如何更改 NSTextStorage 中仅未来文本的属性,设置 textStorage 的属性会更改文本存储中的所有文本而不是未来文本。如果有人可以帮助我。将不胜感激。
谢谢
uitextview - 如何在 UITextView 中复制 GitHub 的应用代码块样式?
我正在尝试创建一个 Markdown 编辑器,因为我对学习 TextKit 很感兴趣。我只在 iOS 设备上工作,所以我只有 UIKit 框架可供我使用,我还观看了这个WWDC18 视频,它解释了使用 TextKit 采用的一些最佳实践。起初,我真的很想知道如何获得与视频在 22:13 显示的相同结果。
视频中开发人员显示的代码使用AppKit
并通过将代码部分替换为 a并为后者NSMutableParagraphStyle
提供自定义来将代码包装在该矩形中。NSTextBlock
你可以猜到,我不能继承NSTextBlock
,UIKit
因此我不能复制所示的例子。
不过,我有一些更难问的问题,我真正想要复制的是 GitHub 应用程序代码块样式,这是我想要复制的最终结果:
如您所见,它应该有一个带有自定义背景颜色的圆角矩形,并且它需要可滚动以使代码尽可能多地扩展(我对语法突出显示不感兴趣)。
NSTextBlock
如果在 中不可用,我该如何实现这样的目标UIKit
?
目前我所做的只是覆盖NSTextStorage
以使用 custom 为代码部分设置正确的字体NSAttributedString
。
ios - 从剪贴板粘贴文本时自定义 NSTextStorage 崩溃
我试图继承 NSTextStorage。现在,我只关注文档,覆盖原语:
起初,一切正常。但是,当我尝试使用自定义的 TextStorage 将长文本(大约 9000 个字符)粘贴到 UITextView 时,我的应用程序崩溃了:
我不认为 10k 对于 TextView 来说太大了,如果我使用默认的文本存储,它就可以正常工作。但我找不到问题出在哪里。
我尝试使用 Objective-C 而不是 Swift 来编写我的 TextStorage,但问题仍然存在:
尝试添加beginEditing()
并endEditing()
喜欢这样,但它没有任何不同:
我发现崩溃是在 and 之后发生的replaceCharacters(in:with:)
,setAttributes(_:range:)
在processEditing()
调用下。但我没有覆盖processEditing()
.
ios - 如何切换 UIFont 的粗体和斜体
我正在尝试使用 textKit 快速将粗体和斜体应用于 UITextView 中的选定文本。
这是代码:
我想要实现的是
- 将所选文本更改为粗体或斜体
- 将选定的粗体文本更改为斜体,反之亦然
现在发生的情况是,当我选择文本并将其更改为粗体时,它会更改为粗体,但是当我尝试将另一个文本更改为斜体时,它也会更改为粗体,我仍然无法从粗体切换为斜体。
swift - 在 NSTextStorage 中换行时 UITextView 中的插入符号移动
在更改 NSTextStorage.replaceCharacters 中的文本时,我无法弄清楚如何正确更改 selectedTextRange。在原型上:我想打印“12”而不是任何输入符号并将光标移动到正确的位置,就好像我输入了“12”一样。这是我的代码:
它有效,但光标始终停留在中间(好像我输入了 1 个字符,而第二个字符刚刚插入光标之后):
请告诉我怎么做对吗?
swift - 带有自定义 NSTextStorage 的可滚动 NSTextView 用于格式化
我正在尝试为 Mac OS 制作带有格式的文本编辑器。我一直在使用NSTextView
一个自定义NSTextStorage
类。它将粗体等属性应用于NSAttributableStrings
.
这一切似乎都很好,如下面的屏幕截图所示。这是一个附加NSTextView
的自定义NSTextStorage
类。它通过属性应用格式NSAttributeableString
然而,一切都一样,但是从 Apple 提供的函数中获取一个可滚动的 NSTextView ,NSTextView.scrollableTextView()
它根本不显示任何文本。即使您可以在屏幕截图中看到NStextView
它实际上是可见的。此外,将鼠标移到编辑器上会将光标更改为编辑器光标。但我不能选择、输入或做任何事情。
做与上面完全相同的事情,但不向文本视图提供文本容器确实表明它已正确连接,因为我确实得到了一个可滚动的文本视图。滚动实际起作用的地方,但当然不再应用格式。
所以我很困惑我现在必须做什么。
这基本上是我的设置: