在iOS 6中使用格式化键入UITextView

Sno*_*man 3 iphone objective-c nsattributedstring ios ios6

嗯,这似乎很愚蠢,它无法完成 - 您可以设置一个预定义的属性字符串,以显示在带有格式的文本视图上,但您无法设置要应用于实时键入的常规格式UITextView.

例如,如果我在文本视图中输入任何内容之前执行此操作:

NSString *string = @"Hello world";
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.minimumLineHeight = 50.f;
NSMutableAttributedString *aStr = [[NSMutableAttributedString alloc] initWithString:string];
[aStr addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0,[string length])];
mainTextView.attributedText = aStr;
Run Code Online (Sandbox Code Playgroud)

然后格式化显示,当我用键盘编辑文本时,格式仍然存在.

但是,如果我想从空白开始UITextView并将格式应用于用户将在视图中键入的任何内容,该怎么办?

我试过设置string = @""string = @" ",但这些都没有保留格式.是否真的没有办法将格式应用于用户输入?具有属性字符串属性的UITextView的重点是什么?

根据文档,将完全擦除的text属性设置UITextView为由属性字符串完成的任何格式化.因此无论解决方案是什么,它都不必直接设置textView.text属性,而只是调整attributedText属性.

Smi*_*ian 7

如果我正确地理解了这个问题,那就是它的typingAttributes属性UITextView.

也就是说,你想做的事情如下:

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.minimumLineHeight = 50.f;
mainTextView.typingAttributes = [NSDictionary dictionaryWithObject:paragraphStyle forKey:NSParagraphStyleAttributeName];
Run Code Online (Sandbox Code Playgroud)