Pregunta

Tengo una vista de tabla agrupada que contiene 3 secciones y cada fila por sección. Las primeras dos filas de sección contienen uitextfield (el nombre y el sujeto son los títulos de la sección) y la última contiene UITEXTVIEW (el mensaje es el título de la sección) porque quiero obtener algunos datos del usuario por este controlador mismo.

Los dos campos de texto tienen el retornokeyType como uireturnkeynext. Para UITextView, el botón "Return" está presente en el teclado para alimentar una nueva línea. Así que utilicé el método TextFieldShouldReturn para navegar a la siguiente celda presionando estos botones de tipo de retorno en Uikeyboard.

El botón siguiente funcionará bien con el primer campo de texto (nombre). Aquí viene el problema ... si hago clic en el botón siguiente de la segunda celda, va al UITextView (última celda) con una línea hacia abajo. Es decir, el cursor mueve una línea aparte de su posición original.

Mi código es ...

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

¿Qué debo hacer para que esto funcione bien? Gracias de antemano..

¿Fue útil?

Solución

Mientras probaba muchas cosas, encontré una solución simple pero adecuada:

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

    return YES;
}

Maneja la renuncia de NameteExtfield en sí y no devuelve a la solicitud.

Otros consejos

Básicamente, lo que está sucediendo es que cuando se toca el retorno, hace que la vista de texto sea el primer respondedor y la devolución se agrega a la vista de texto. Es por eso que el cursor va a la segunda línea. Intente hacer esto en su TextViewDidChange: Método delegado:

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

En este enlace Obtendrá la solución de su problema. En esto dado que cómo ocultamos el teclado cuando se hace la edición de texto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top