2015-01-04 4 views
0

Я вставляю первую строку в UITextView по мере ввода. Вот демо.Настройка firstLineHeadIndent в UITextView attribittedText

Это работает, но я не могу понять, как иметь отступ текста, когда он появляется. Если вы добавляете и удаляете символ с клавиатуры, он правильно отбрасывает пустую строку, но я не могу понять, как это сделать, когда она впервые появляется.

@interface ViewController() 
@property (strong, nonatomic) UITextView *textView; 
@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    self.textView = [UITextView new]; 
    self.textView.delegate = self; 
    [self.view addSubview:self.textView]; 
} 

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    self.textView.frame = self.view.bounds; 
    [self textViewDidChange:self.textView]; 
} 

- (void)textViewDidChange:(UITextView *)textView { 
    NSMutableParagraphStyle *style = [NSMutableParagraphStyle new]; 
    style.firstLineHeadIndent = 20.f; 
    NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:textView.text attributes:@{NSParagraphStyleAttributeName: style}];  
    textView.attributedText = string; 
} 
@end 

ответ

0

Я думаю, что это выполняет ту же работу, что и ваш код.

textView.textContainerInset = UIEdgeInsetsMake(8.0f, 20.0f, 8.0f, 0.0f); 
+0

Я вставляю в первую строку не весь текст. –

+0

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

+0

Я тоже об этом думал, но этот хак вызывает проблемы в моем проекте. –

0

Если я правильно понял, вы хотели бы иметь курсор с отступом, когда пользователь вводит пустой UITextView, чтобы начать печатать, и на данный момент он начинает только когда отступ пользователь начинает печатать.

В вашем viewDidLoad инициализацию attributedText с @ «„ а затем установить текст @“», как это:

-(void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.textView = [UITextView new]; 
    self.textView.delegate = self; 
    [self.view addSubview:self.textView]; 

    NSMutableParagraphStyle* style = [NSMutableParagraphStyle new]; 
    style.firstLineHeadIndent = 20.f; 
    NSMutableAttributedString* string = [[NSMutableAttributedString alloc] initWithString:@" " attributes:@{NSParagraphStyleAttributeName: style}];  
    textView.attributedText = string; 
    textView.text = @""; 
} 

Примечание: Я думаю, что код внутри textViewDidChange не нужно.

+0

Да, но, как я писал в своих комментариях для другого опубликованного ответа, я не могу изменить значение атрибутированного текста простым для запуска атрибутов. Я хочу, чтобы отступ произошел, когда вы впервые нажимаете текстовое представление пустой строкой, как это происходит, когда вы вставляете и удаляете символ с клавиатуры. –

Смежные вопросы