2013-09-25 1 views
-1

У меня есть UITextView. У меня есть делегат для myTextView набора для self и, когда я нормальное редактирование, этот метод вызывает просто отлично:UITextView insertText call shouldChangeTextInRange: replacementText:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
{ 
    NSLog(@"Called"); 
} 

В моем приложении, я называю в моем коде: [myTextView insertText:@"Hello World"];. Когда я это сделаю, мне нужно позвонить textView:shouldChangeTextInRange:replacementText: после того, как текст будет вставлен. Как мне это сделать?

+0

Вы бы естественно назвать это явно, прежде чем сделать правку, а затем сделать правку, если он возвращается 'YES'. – Wain

+0

@Wain - Как я могу назвать это явно? –

ответ

4

Звоните прямо. Вызовите его перед редактированием и выполните только редактирование, если оно вернет YES. Чтобы вызвать его явно, вам нужно знать выбранный диапазон (получить выбранный диапазон с selectedTextRange), вот и все. У вас уже есть текст для добавления и текстовое представление.

2

Спасибо за ответ, @Wain!

Вот что работал:

- (void)insertText 
{ 
    NSString *stringToAdd = @"Hello World"; 

    NSString *replacementText = [myTextView.text stringByAppendingString:stringToAdd]; 

    [napkinTextView insertText:stringToAdd]; 

    [self textView:myTextView shouldChangeTextInRange:NSMakeRange(0, stringToAdd.length) replacementText:replacementText]; 
} 
Смежные вопросы