UITextView: текст начинается со второй строки текстового вида

У меня странная проблема. У меня есть 3 UITextField и один UITextView. Я могу перейти от одного UITextField к следующему UITextField с помощью:

- (BOOL) textFieldShouldReturn:(UITextField *)textField
{
    NSInteger nextTag = textField.tag + 1;
    //-- try to find next responde
    UIResponder* nextResponder = [textField.superview viewWithTag:nextTag];

    if (nextResponder) 
    {
        //-- found next responce ,so set it
        [nextResponder becomeFirstResponder];
    }
    else
    {
        [scrollView setContentOffset:CGPointMake(0, 0) animated:YES];
        //-- not found remove keyboard
        [textField resignFirstResponder];
        return YES;
    }   

    return YES;
}

Все работает нормально, пока не дойдет до UITexView, тогда мой курсор перемещается в 2-й строке текстового вида вместо 1-й строки текстового вида.

Текстовый вид берется из IB.

Код для просмотра текста:

- (void) textViewDidBeginEditing:(UITextView *)textView
{
    optionalText.hidden = YES ;
    [scrollView setContentOffset:CGPointMake(0, textView.center.y-100) animated:YES];
}

- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{       
    // Any new character added is passed in as the "text" parameter
    if ([text isEqualToString:@"\n"])
    {
        // Be sure to test for equality using the "isEqualToString" message
        [textView resignFirstResponder];
        [scrollView setContentOffset:CGPointMake(0, 0) animated:YES];

        // Return FALSE so that the final '\n' character doesn't get added      
        if ([[commentTxtView.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] == 0)
        {
            optionalText.hidden = NO ;
            NSLog(@"Text View is null");
            [scrollView setContentOffset:CGPointMake(0, 0) animated:YES];
        }

        return FALSE;
    }

    return TRUE;
}

Он выглядит следующим образом:

enter image description here

В чем может быть проблема? Почему это не начинается с первой строки текстового вида?

Ответ 1

Я уверен, ваш textFieldShouldReturn: должен вернуть NO, если nextResponder - ваш UITextField. Прямо сейчас вы всегда возвращаете YES, что означает, что ключ, вероятно, передается в UITextView, который затем вставляет новую строку.

Ответ 2

Для кого-то, ищущего перевод Swift 2.0...

Вместо возврата true в textFieldShouldReturn после yourUIITextView.becomeFirstResponder() верните false.

Работал для меня!

Надеюсь, это поможет!