问题标签 [nstextview]
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.
cocoa - 更改 NSTextView 中的文本选择颜色
我正在尝试在 NSTextView 上编写“突出显示”功能。目前,一切都很好。您选择一个文本范围,该文本的背景颜色变为黄色。但是,虽然它仍处于选中状态,但背景是所选文本的标准蓝色。如何使标准选择指示器颜色在某些情况下不显示?
谢谢!
macos - 保存 CoreData 上下文和绑定问题
我将 CoreData 用于在 10.5 或更高版本下运行的 Mac 应用程序。实体的内容(文本属性)将通过绑定显示在 NSTextView 中。用户可以在那里编辑文本。
当我尝试保存托管对象上下文时,鼠标光标从文本视图中消失,文本视图向上滚动到顶部。
我怎样才能防止 CoreData/binding 这样做,因为用户失去焦点很烦人!
编辑:将解决方案添加为单独的答案,以将问题标记为已完成!
objective-c - 将 NSScrollView 设置为不可编辑
我想知道如何注意我的 NSScrollView 用户不可编辑,但我没有找到方法,IB 中没有选项,也没有找到 NSSCrollView 类的合适方法。
上一篇文章建议实现委托方法
返回false,但这对我来说还不起作用。上一个问题没有给出解决方案。
(我也尝试选择 TextView 一切它不显示选项“可编辑”我刚刚下载了新的 Xcode,所以版本应该不是问题)
cocoa - 如何调用 NSCell 的 fieldEditorForView:分配自定义字段编辑器
我有一个 NSTextView,我想将其用作 NSTextField 的字段编辑器。
由于视图中会有其他不使用自定义字段编辑器的 NSTextField,看来我应该使用 NSCell 的方法
不过,我无法思考如何称呼它,也没有找到任何使用它的例子。
NSCell 的文档说“aControlView”是:
包含需要自定义字段编辑器的单元格的视图。
我的大脑所说的意思是“这个 NSTextField 所在的视图”,而不是 NSTextField(作为 NSView 的子类)。
然而:
对我来说没有意义,因为它不是viewForFieldEditor:
......但它在 NSCell 上。
有人会怜悯我,并解开我的思想吗?
objective-c - NSTextView 在图层上不显示红色拼写错误下划线
当 an是 layer-backed ( )NSTextView
的子视图时,它不会为拼写错误的单词呈现波浪状的红色下划线。重现这一点只需创建一个空的 Cocoa 项目,打开 nib,拖入窗口,然后切换窗口的内容视图以显示图层。繁荣 - 不再有红色下划线。NSView
-wantsLayer == YES
NSTextView
我进行了一些搜索,这似乎是一种已知情况,并且自 10.5 以来一直如此。但是,我找不到的是一种解决方法。NSTextView
当处于图层支持的视图中时,是否没有办法让下划线呈现?
我可以想象覆盖NSTextView
'sdrawRect:
并使用布局管理器找到具有指示拼写错误的适当临时属性集的适当矩形,然后自己绘制红色曲线,但这当然是一个彻底的黑客。我也可以想象 Apple 在 10.7(也许)中修复了这个问题,突然我的应用程序会有双下划线或其他东西。
[更新] 我的解决方法
我目前的解决方法是受到 nptacek 提到的拼写检查委托方法的启发,这促使我深入挖掘了一条我以前没有注意到的路径,所以我将接受这个答案,但发布我为后代和/或进一步所做的事情讨论。
我正在运行 10.6.5。我有一个 NSTextView 的子类,它是 NSClipView 的自定义子类的文档视图,它又是我的窗口的 contentView 的子视图,它打开了图层。在玩这个的过程中,我最终将所有自定义项都注释掉了,但拼写检查仍然无法正常工作。
我隔离了我认为是两个不同的问题:
#1是 NSTextView,当托管在图层支持的视图中时,甚至不会费心绘制拼写错误的下划线。(我根据谷歌搜索收集到,它可能在 10.5 天内画了下划线,但不是在正确的位置 - 所以苹果可能刚刚完全禁用它们以避免在 10.6 中出现这个问题。我不确定.我如何定位东西等也可能有一些副作用,导致它们根本不会出现在我的案例中。目前未知。)
#2是当 NSTextView 处于这种与图层相关的情况时,它似乎在您键入文本时没有正确地将文本标记为拼写错误 - 即使 -isContinuousSpellCheckingEnabled 设置为 YES 也是如此。我通过实现一些拼写检查委托方法来验证这一点,并观察 NSTextView 发送有关更改的消息,但从未通知将任何文本范围设置为拼写错误 - 即使明显拼写错误的单词会在 TextEdit(和其他文本视图中显示红色下划线)在其他应用程序中)。我还覆盖了 NSTextView 的 -handleTextCheckingResults:forRange:types:options:orthography:wordCount: 以查看它所看到的内容,并且在那里看到了同样的内容。就好像 NSTextView 正在积极地将光标下的单词设置为没有拼写错误,然后当用户键入空格或离开它或其他什么时,它没有 t 重新检查拼写错误。不过,我并不完全确定。
好的,为了解决#1问题,我在我的自定义 NSTextView 子类中覆盖了 -drawRect: ,看起来像这样:
然后我实现了 -drawFakeSpellingUnderlinesInRect: 以使用 layoutManager 来获取包含 NSSpellingStateAttributeName 作为临时属性的文本范围,并呈现一个合理接近标准 OSX 拼写错误点图案的点图案。
所以在这样做之后,我可以看到红色下划线,但它似乎没有在我输入时更新拼写状态。为了解决这个问题,我在我的 NSTextView 子类中实现了以下邪恶的黑客攻击:
它的工作方式与实际的、预期的 OSX 行为不太一样,但它有点接近,现在可以完成工作。希望这对其他人有所帮助,或者更好的是,有人来这里告诉我我遗漏了一些非常简单的东西并解释了如何解决它。:)
cocoa - NSAttributedString 中的段落是如何定义的?
我看到有一个属性名称 ( NSParagraphStyleAttributeName
) 用于将段落样式应用于 Cocoa 中的文本。文本存储在 中NSAttributedString
,但是在该字符串中定义“段落”的是什么——它是换行符\n
吗?其他角色?如果是\n
,那么如何在不开始新段落的情况下创建新行。最后,当您将 ParagraphStyle 附加到字符串时,您是否必须使用整个段落的确切范围,或者您可以将其放在段落中的任何子范围内。如果可以是子范围,那么系统如何处理同一段落上的两个或多个 ParagraphStyle?
谢谢,罗伯
cocoa - 在 NSTextView 中混合图形?
我以为我在某处读到有一种方法可以在文本视图中嵌入绘图或其他非文本,但我在 Apple 文档中找不到任何相关信息。谁能指出我正确的方向?我正在尝试构建一个编辑器,而不仅仅是一个视图。我在底层文本中想象一个特殊字符,并且基于文本属性,它会在文本布局中保留一些空白空间。? 或者我可能需要自己布局块,使用 NSTextContainers 和自定义 NSView 来围绕图形流动文本?
objective-c - 在 NSTextView 中绘制多个光标
与 UITextView 无关!
在Mac应用程序中,我想在 NSTextView(在 NSScrollView 中)中绘制多个光标。一个光标当然是您正在键入的位置,即您在正常键入时看到的位置。
其他光标是其他人正在打字的位置。这些游标的位置是 NSArray 中的 NSNumber。
如何覆盖 NSTextView 的 draw 方法以在特定字符位置绘制光标?管道字符不是一个选项。
哦,请注意,NSTextView 中所有文本的字体始终为 Monaco 10pt。
objective-c - 在 NSDocument 中设置行终止符字符串?
(这个问题已经从一个问题中重写,并进行了NSTextView
一些进一步的研究)
更新:您可以下载一个非常基本的项目,在此处显示问题:
http://w3style.co.uk/~d11wtq/DocumentApp.tar.gz
(grep -c "\r" file.txt
对您保存的文件执行 a 以获得\r
发生的行数......重复 for \n
)。
我已经意识到NSDocument
have创建的所有文件\r
都是行结尾,而不是标准\n
,即使NSData
我的文档子类返回不包含\r
,它只包含\n
. 有没有办法配置这个?
这些天我认为 Mac 使用 UNIX 行结尾,所以 AppKit 仍然使用过时的 Mac 结尾似乎很奇怪。更奇怪的是,它NSDocument
要求,然后通过改变行尾来NSData
相当不友好地破坏它。NSData
切换到\r
是在 producer之后发生的NSData
,因此NSDocument
它本身正在对字节进行一些替换:
输出(注 0a 是 的十六进制值\n
):
如果NSDocument
要要求NSData
那么它应该尊重它而不是修改它。
以下是方法的完整代码:-dataOfType:error:
我的文档中的方法:
objective-c - 用于特殊文本编辑的对象
我需要一个特殊的文本字段来执行以下操作:
- 多行
- 制表键支持
- 按下回车键时发送动作
- alt+enter 换行
- shift+enter 换行
我不知道该用什么。
NSTextView 看起来不错,但我无法在输入时设置操作并按下输入键会导致新行
NSTextField 没有制表键支持,并且 shift-enter 不起作用。
有任何想法吗?谢谢!