0

全部,

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

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

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 插入滚动区域并以更明确的方式对其进行管理。在那之前,帮助!

4

1 回答 1

0

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

于 2010-08-18T01:15:48.533 回答