我遇到了这个很好的例子,它帮助我理解了如何在使用 iOS7 在 UITextView 中键入时实现行间距/段落间距,但是有一个问题,我希望有人可以帮助我解决我仍在学习的问题关于TextKit请。
这是实际示例 https://github.com/downie/DoubleSpacedTextView
我附上了2个文件:-
1- 这是问题的视频:- http://1drv.ms/1o8Rpd2
2-这是我正在测试的项目:http: //1drv.ms/1o8RtK0
问题是当文本行之间有空行(至少 2 个空行),然后在空行内单击以激活 UITextView 并显示键盘时,文本向上移动/失去其格式。
这是我对原始版本进行了轻微修改的核心功能,它进行了格式化,它工作得很好,但当你第一次在 UITextView 内单击时它就不行了:-
- (void) formatText
{
__block CGFloat topOffset = 0;
NSRange lineGlyphRange = [self.layoutManager glyphRangeForTextContainer:self.textContainer];
[self.layoutManager
enumerateLineFragmentsForGlyphRange:lineGlyphRange usingBlock:^(CGRect rect, CGRect usedRect, NSTextContainer *textContainer, NSRange glyphRange, BOOL *stop)
{
CGRect adjustedRect = rect;
CGRect adjustedUsedRect = usedRect;
adjustedRect.origin.y = topOffset;
adjustedUsedRect.origin.y = topOffset;
[self.layoutManager setLineFragmentRect:adjustedRect forGlyphRange:glyphRange usedRect:adjustedUsedRect];
topOffset += 30; // 30 is the space between the lines you can adjust this as you like
}];
CGRect adjustedExtraLineFragmentRect = self.layoutManager.extraLineFragmentRect;
CGRect adjustedExtraLineFragmentUsedRect = self.layoutManager.extraLineFragmentUsedRect;
adjustedExtraLineFragmentRect.origin.y = topOffset;
adjustedExtraLineFragmentUsedRect.origin.y = topOffset;
[self.layoutManager setExtraLineFragmentRect:adjustedExtraLineFragmentRect usedRect:adjustedExtraLineFragmentUsedRect textContainer:self.textContainer];
}
你能看看我们是否可以阻止这种情况发生吗?这样文本在我们输入 UITextView 时总是被格式化。
是否有任何其他示例显示我们如何使用 TextKit 或属性文本将格式化文本(带行距)键入 UITextView?
自iOS6以来,我一直在努力解决这个问题。
谢谢,
将要