试图将NSMutableParagraphStyle应用于新的NSRange失败

时间:2010-08-05 15:12:01

标签: cocoa text nslayoutmanager

所有

我正在调整NSTextView以基本上支持插入样板文本和缩进。我遇到了一个问题,在我从编辑范围中删除锅炉板压痕样式后,锅炉板文本的缩进应用于非锅炉板文本(我在用户点击进入时删除样式)。这就是事情变得奇怪的地方:

在编辑器中显示文本标尺,我看到的行为改变了缩进。输入返回键后,我运行以下代码:

NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; 
[style setTabStops: [NSArray array]];
[style setHeadIndent:0];
[style setFirstLineHeadIndent:0];
NSRange effectiveRange = [textView rangeForUserTextChange];
[self applyStyleToRange:effectiveRange style:style];
[style release];

最初,这是有效的,但如果我将光标移动到这个新行上方的锅炉电镀,缩进文本,当我将光标向下移动到新行时,制表符会重新出现并且不会消失回车创建。在我看来,前一段的风格适用于新段落。

我在网上放了一个视频(30秒1.3 MB),显示了问题:

http://gordonjl.com/files/indentingProblem%20-%20Computer.m4v

另外:是的,这是一种可怕的方法,但这是此版本的最后一个错误,我必须发货。在随后的版本中,我希望将NSTextViews插入滚动区域并以更明确的方式管理它。在那之前,请帮助!

1 个答案:

答案 0 :(得分:0)

我真的不了解你的目标而是FWIW,如果你设置了一个段落属性,你可能想要使用rangeForUserParagraphChange。如果cursor位于textStorage的末尾,则必须设置textView的typingAttributes,因为将属性应用于空范围是没有意义的。