如何在UI文本视图(空文本视图)中设置行间距以输入带行空格的消息

时间:2014-06-23 12:32:12

标签: iphone objective-c uitextview nsattributedstring

在我的应用程序中,我需要在ui文本视图上设置一些行间距..

我知道我们可以使用段落样式间距

为不可编辑的文本视图/标签执行此操作

但在我的应用程序中,当我输入文本时,它无效,

只有当我有一个预定义文本时,我才能做到这一点,如果一旦我清除文本段落麦粒肿将无法正常工作

 NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    paragraphStyle.minimumLineHeight = 35.f;
    paragraphStyle.maximumLineHeight = 35.f;

    UIFont *font = [UIFont fontWithName:@"AmericanTypewriter" size:18.f];
    NSString *string = @"This is a test";
    NSDictionary *attributtes = @{
                                  NSParagraphStyleAttributeName : paragraphStyle,
                                  };
    deedTextView.font = font;
    deedTextView.attributedText = [[NSAttributedString alloc] initWithString:string
                                                                   attributes:attributtes];

但是,我没有任何预定义的文字,如NSString *string = @"This is a test";

文本视图必须为空,而开始

2 个答案:

答案 0 :(得分:1)

想到一个简单的选项如下。

使用UITextViewDelegate中的这两种方法之一,您可以实现您想要的目标:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
- (void)textViewDidChange:(UITextView *)textView;

您的算法如下 - 将textView.text转换为您需要的样式,并将textView.text设置为textView.attributedText

您也可以尝试设置:

deedTextView.typingAttributes = [NSDictionary dictionaryWithObject:paragraphStyle forKey:NSParagraphStyleAttributeName];

答案 1 :(得分:1)

我遇到了同样的问题。根据Sergius的回答,我提出了以下工作解决方案。 Sergius回答的问题是所有其他已设置的属性都将被覆盖(字体,颜色......)

因此,最好编辑现有的typingAttributes:

NSDictionary* d = deedTextView.typingAttributes;
NSMutableDictionary* md = [NSMutableDictionary dictionaryWithDictionary:d];
[md setObject:paragraphStyle forKey:NSParagraphStyleAttributeName];
deedTextView.typingAttributes= md;