UITextView textviewshouldendediting никогда не вызывается - PullRequest
0 голосов
/ 24 мая 2011

У меня есть настройка UITextView, как это:

    UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(10, 40, 280, 240)];
    [textView setBackgroundColor:[UIColor greenColor]];
    [textView setFont:[UIFont fontWithName:@"MyriadPro-Regular" size:13]];
    [textView setTextColor:[UIColor blackColor]];
    [textView setText:@"Your Message...."];
    [textView setBackgroundColor:[UIColor clearColor]];
    [textView setDelegate:self];
    [textView setReturnKeyType:UIReturnKeyDone];

Я ожидаю, что когда пользователь нажмет кнопку «Готово» на клавиатуре, будет вызван этот метод (который я реализовал):

- (BOOL)textViewShouldEndEditing:(UITextView *)textView {
    NSLog(@"called");
    [textView resignFirstResponder];
    return YES;
}

Но этот метод никогда не вызывается .. Что я делаю не так? Спасибо.

1 Ответ

4 голосов
/ 24 мая 2011

Пока вы устанавливаете тип ключа возврата, он не меняет поведение текстового представления.На Return это добавит новую строку в текстовое представление.Так что, если вы не хотите, чтобы ваш текстовый просмотр был многострочным, вы можете захватить \n и resignFirstResponder.

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    if ( [text isEqualToString:@"\n"] ) {
        [textView resignFirstResponder];
    }

    return YES;
}

. В примечании стороны, textViewShouldEndEditing: вызывается после того, как вы уволилисьстатус респондента.

Если вы хотите сохранить символы новой строки в текстовом представлении, вам следует рассмотреть возможность использования inputAccessoryView текстового представления.Примером этого является here.

...