UITextView Добавление новой строки при первом ответе

Итак, у меня есть UITextField, который является первым ответчиком, когда страница открыта (отлично работает). Тогда у меня есть UITextView, который становится первым ответчиком, когда пользователь нажал return и что там, где моя проблема. При нажатии кнопки возврата вещи работают нормально с первыми респондентами, но UITextView добавляет строку и начинает курсор, мигающий во второй строке. Есть ли кто-нибудь, кто может мне помочь? Спасибо заранее!

Вот переключатель

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    [self.fieldDescription.textView becomeFirstResponder];

    return YES;
}

Смотрите, где значок мигает? Что там, где оно начинается, когда меняются первые респонденты... enter image description here

Ответ 1

Отличный вопрос и описание. У меня была такая же проблема.

Никакой ответ на эту тему не решил это для меня. Кто-то добавил ссылку в комментарии (by @AndreiRadulescu) из другого потока. ответ от @rmaddy на эту тему решил. Его ответ был:

Одним из решений для решения этой проблемы является textFieldShouldReturn: метод делегирования, обязательно верните NO, а не ДА. Возвращая NO, новая строка не передается в текстовое поле.

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
// move to next field or whatever you need
[myTextView becomeFirstResponder];

return NO;
}

В Swift:

//Dismisses keyboard upon tapping the return key
func textFieldShouldReturn(textField: UITextField) -> Bool {
    txtTask.resignFirstResponder()
    return false
}

Ответ 2

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

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

с помощью этого вы можете остановить новую строку и вернуть клавиатуру, см. ниже код

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

Ответ 3

Попробуйте использовать

- (void)textFieldDidEndEditing:(UITextField *)textField
{
    [self.fieldDescription becomeFirstResponder];
}

вместо

- (BOOL)textFieldShouldReturn:(UITextField *)textField;

textFieldShouldReturn → автоматически уходит в отставку с первым ответчиком

Ответ 4

В моем случае я просто установил пустой текст, когда textViewShouldBeginEditing

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
{
    self.myTextView.text [email protected]"";

    return YES;
}