Tengo un problema extraño. Tengo 3 UITextField
sy uno UITextView
. Puedo pasar de un lado a UITextField
UITextField
por:UITextView: el texto comienza desde la segunda línea de vista de texto
- (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;
}
Su todo funciona bien hasta que llega a UITexView
, entonces mis cursor se mueve en la segunda línea de la vista de texto en lugar de la primera línea de vista de texto.
La vista de texto está tomada de IB.
El código para ver texto:
- (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;
}
Se ve así:
¿Cuál podría ser el problema? ¿Por qué no comienza desde la primera línea de vista de texto?
¿Qué es una vista de desplazamiento en este caso? Verificaría dos veces esta línea: [scrollView setContentOffset: CGPointMake (0, textView.center.y-100) animado: YES]; – Maggie
¿Puede mostrarnos a dónde llama su método textFieldShouldReturn? Si lo llama como al principio del ciclo de vida de la vista, ya que tiene más de un campo de texto, la condición "if (nextResponder)" lo enviará automáticamente al siguiente textField. – shinyuX