Ho problemi con il mio codice. Sto cercando di spostare il UIScrollView
quando sto modificando e UITextField
dovrebbe essere nascosto dal pop della tastiera.
Sto spostando il frame principale in questo momento perché non so come "scorrere verso l'alto" nel codice. Quindi, ho fatto un po 'di codice, funziona bene, ma quando modifico un campo di testo dell'interfaccia utente e passo a un altro UITextField
senza premere il pulsante "Invio", la vista principale va mooolto in alto.
Ho fatto un NSLog()
con le mie variabili size, distance e textFieldRect.origin.y come puoi vedere sotto. Quando ne metto due UITextField
nello stesso punto (origine y) e faccio questo particolare 'interruttore' (senza premere Invio), ottengo gli stessi numeri, mentre il mio codice ha funzionato bene per la prima UITextField
modifica ma non per la seconda modifica.
Controllalo:
- (void)textFieldDidBeginEditing:(UITextField *)textField {
{
int size;
CGRect textFieldRect = [self.view.window convertRect:textField.bounds fromView:textField];
size = textFieldRect.origin.y + textFieldRect.size.height;
if (change == FALSE)
{
size = size - distance;
}
if (size < PORTRAIT_KEYBOARD_HEIGHT)
{
distance = 0;
}
else if (size > PORTRAIT_KEYBOARD_HEIGHT)
{
distance = size - PORTRAIT_KEYBOARD_HEIGHT + 5; // +5 px for more visibility
}
NSLog(@"origin %f", textFieldRect.origin.y);
NSLog(@"size %d", size);
NSLog(@"distance %d", distance);
CGRect viewFrame = self.view.frame;
viewFrame.origin.y -= distance;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];
[self.view setFrame:viewFrame];
[UIView commitAnimations];
change = FALSE;
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
change = TRUE;
CGRect viewFrame = self.view.frame;
viewFrame.origin.y += distance;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];
[self.view setFrame:viewFrame];
[UIView commitAnimations];
}
Qualche idea ?