Ich habe Probleme mit meinem Code. Ich versuche das zu verschieben, UIScrollView
wenn ich eine bearbeite UITextField
, die vom Tastatur-Pop ausgeblendet werden soll.
Ich bewege gerade den Hauptrahmen, weil ich nicht weiß, wie ich im Code nach oben scrollen soll. Also habe ich ein bisschen Code gemacht, es funktioniert gut, aber wenn ich ein UI-Textfeld bearbeite und zu einem anderen wechsle, UITextField
ohne auf die Schaltfläche "Zurück" zu klicken, geht die Hauptansicht waaayyyyy zu weit nach oben.
Ich habe eine NSLog()
mit meinen Variablen size, distance und textFieldRect.origin.y erstellt, wie Sie unten sehen können. Wenn ich zwei UITextField
an derselben Stelle (y-Ursprung) platziere und diesen speziellen 'Schalter' mache (ohne die Eingabetaste zu drücken), erhalte ich die gleichen Zahlen, während mein Code für die erste UITextField
Bearbeitung gut funktioniert hat, aber nicht für die zweite Bearbeitung.
Überprüfen Sie dies heraus:
- (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];
}
Irgendwelche Ideen ?