Как установить межстрочный интервал в текстовом представлении пользовательского интерфейса (пустой текстовый вид) для ввода сообщения с пробелом в строке

#iphone #objective-c #uitextview #nsattributedstring

#iPhone #objective-c #uitextview #nsattributedstring

Вопрос:

В моем приложении мне нужно установить некоторый межстрочный интервал в текстовом представлении пользовательского интерфейса..

Я знаю, что мы можем сделать это для не редактируемых текстовых представлений / меток, используя интервал в стиле абзаца

Но в моем приложении, когда я ввожу текст, он не работает,

Я могу сделать это только тогда, когда у меня есть заранее определенный текст, если после очистки текстового абзаца sty не будет работать

  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";

Текстовое представление должно быть пустым, в то время как begin

Ответ №1:

У меня была такая же проблема. Основываясь на ответе Sergius, я придумал следующее рабочее решение. Проблема с ответом Sergius заключалась в том, что все остальные уже установленные атрибуты будут перезаписаны (шрифт, цвет …)

Поэтому лучше отредактировать существующие атрибуты typingAttributes:

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

Ответ №2:

Один простой вариант, который приходит на ум, заключается в следующем.

Используя один из этих 2 методов 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. Я пробовал, это не работает, каждый символ переходит на следующую строку при вводе текста