Vit*_*nko 3 macos cocoa objective-c nstextview swift
找不到任何线索来管理它。
默认情况下,NSTextView选择突出显示其文本容器的整个大小。它忽略行距,头或尾缩进等。但是在Pages应用程序选择中不突出显示那些辅助部分,它仅突出显示字符。即使文本容器的高度较小(前后段落间距),它也会突出显示行的所有高度。
我想实现这种行为,但不知道从哪里开始。我在这里搜索过,我在搜索过Apple文档,还尝试过示例项目。没有。
也许有人可以指引我正确的方向?谢谢!
我发现hamstergene的答案不正确。实际上,NSTextView会突出显示其整个范围内的文本容器行。
因此,如果您使用段落的头部缩进,则前导文本空白将突出显示。并且,如果选择EOL字符,则文本容器的尾部将突出显示。
我的解决方案是使段落样式的首尾缩进为零(我将其缓存在私有变量中,并在访问我的文本存储进行打印时将它们放回),并通过覆盖的lineFragmentRectForProposedRect:atIndex:WritingDirection调整文本容器行的框架:我的NSTextContainer子类的剩余方法。
但是后来我找到了很多正确的方法。只需重写func fillBackgroundRectArray(_ rectArray: UnsafePointer<NSRect>, count rectCount: Int, forCharacterRange charRange: NSRange, color: NSColor)
NSLayoutManager,计算您的矩形并使用这些矩形调用super。并且,如果您正确计算了选择矩形,您将获得确切的选择行为,例如在Apple Pages或MS Word中。
简单容易!
归档时间: |
|
查看次数: |
558 次 |
最近记录: |