Проблема с методом TextfieldShouldReturn при использовании Uitextfield вместе с UitextView

StackOverflow https://stackoverflow.com/questions/6825558

Вопрос

У меня есть сгруппированный вид таблицы, который содержит 3 раздела и каждую строку на раздел. Первые два ряда раздела содержит Uitextfield (имя и субъект - это названия раздела), а последний содержит uitextView (сообщение - заголовок раздела), потому что я хочу получить некоторые данные от пользователя от самого контроллера.

Два текстовых поля имеют returnkeytype как uireurnkeyNext. Для uitextView кнопка «Возврат» присутствует на клавиатуре для подачи новой линии. Поэтому я использовал метод TextFieldShouldReturn, чтобы перейти к следующей ячейке, нажав эти кнопки возвращаемого типа в Uikeyboard.

Следующая кнопка будет работать нормально с первым текстовым полем (имя). Здесь возникает проблема ... если я нажму следующую кнопку второй ячейки, она переходит в UitextView (последняя ячейка) с одной линией вниз. То есть курсор перемещает одну линию от своей первоначальной позиции.

Мой код ...

-(BOOL) textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    if (textField == nameTextField) {
        [subjectTextField becomeFirstResponder];    
    }
    else if(textField == subjectTextField) {
        [messageTextView becomeFirstResponder];
    }
    return YES;
}

Что я должен сделать, чтобы эта работа была нормальной? Заранее спасибо..

Это было полезно?

Решение

При тестировании много вещей я нашел простое, но подходящее решение:

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    if ( [textField isEqual: nameTextField] )
    {
        [nameTextField resignFirstResponder];
        [messageTextView becomeFirstResponder];
        return NO;
    }

    return YES;
}

Он обрабатывает смирение самого Намексфилда и возвращает нет по запросу.

Другие советы

По сути, что происходит, так это то, что когда возврат нарезается, вы делаете текстовый просмотр первого респондента, и возврат добавляется в текстовое представление. Вот почему курсор идет на вторую строку. Попробуйте сделать это в своем TextViewDidChange: Metegate Method:

- (void)textViewDidChange:(UITextView *)textView {
        if(textView.text == @"\r") {
        textView.text = @"";
}

В эта ссылка Вы получите решение вашей проблемы. В этом, учитывая, как мы скрываем клавиатуру при редактировании текста.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top