全,
我正在调整一个NSTextView,使其基本上支持样板文本的插入和缩进。我遇到了一个问题,在我从编辑的范围中删除样板缩进样式后,样板文本的缩进应用于非样板文本(当用户按enter时,我删除了该样式)。这就是事情变得奇怪的地方:
在编辑器中显示文本标尺时,我看到了更改缩进的行为。输入return键后,我运行以下代码:
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.3MB),显示了这个问题:
http://gordonjl.com/files/indentingProblem%20-%20Computer.m4v
另外:是的,这是一种可怕的方式,但这是这个版本的最后一个bug,我必须发布它。在后续版本中,我希望将NSTextViews插入到滚动区域中,并以更明确的方式对其进行管理。在此之前,请帮帮我!
发布于 2010-08-18 09:15:49
我真的不理解你的目标,但是顺便说一句,如果你在设置段落属性,你可能会想要使用rangeForUserParagraphChange。如果光标位于textStorage的末尾,则必须设置文本视图的typingAttributes,因为将属性应用于空范围是没有意义的。
https://stackoverflow.com/questions/3416183
复制相似问题