Ho uno strano problema. Ho 3 UITextField
s e uno UITextView
. Posso passare da un UITextField
al prossimo UITextField
da:UITextView: il testo inizia dalla seconda riga del testo
- (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;
}
E 'tutto funziona bene fino a quando si tratta di UITexView
, allora i miei cursore si sposta a seconda riga della visualizzazione di testo al posto di 1 ° linea di vista del testo.
La visualizzazione del testo è presa da IB.
Il codice per la visualizzazione del testo:
- (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;
}
Ecco come si presenta:
Quale potrebbe essere il problema? Perché non inizia dalla prima riga della visualizzazione del testo?
cos'è una vista a scorrimento in questo caso? Vorrei ricontrollare questa riga: [scrollView setContentOffset: CGPointMake (0, textView.center.y-100) animato: YES]; – Maggie
Puoi mostrarci dove chiami il metodo textFieldShouldReturn? Se la chiami come all'inizio del ciclo di vita della vista, dato che hai più di un campo di testo, la condizione "if (nextResponder)" ti invierà automaticamente al campo di testo successivo. – shinyuX