Ich habe ein Beispiel für ein Buch verwendet, um die Ansicht nach oben zu schieben, wenn die Tastatur erscheint, damit sie die Textfelder nicht verdeckt.
Alles funktioniert, außer der Tatsache, dass meine Ansicht nach oben verschoben wird und nicht nach unten, wenn ich auf den Hintergrund klicke, um die Tastatur zu verstecken. Die Tastatur wird ausgeblendet, aber die Ansicht bleibt verschoben. Wenn ich die Eingabetaste verwende, um die Tastatur auszublenden, funktioniert alles einwandfrei. Der folgende Code ist:
- (void)keyboardWillShow:(NSNotification *)notif {
NSDictionary* info = [notif userInfo];
NSValue* aValue = [info objectForKey:
UIKeyboardBoundsUserInfoKey];
CGSize keyboardSize = [aValue CGRectValue].size;
float bottomPoint = (password.frame.origin.y+
password.frame.size.height+10);
scrollAmount = keyboardSize.height -
(self.view.frame.size.height- bottomPoint);
if (scrollAmount > 0) {
moveViewUp = YES;
[self scrollTheView:YES];
}
else
moveViewUp = NO;
}
- (void)scrollTheView:(BOOL)movedUp {
[UIControl beginAnimations:nil context:NULL];
[UIControl setAnimationDuration:0.3];
CGRect rect = self.view.frame;
if (movedUp){
rect.origin.y -= scrollAmount;
}
else {
rect.origin.y += scrollAmount;
}
self.view.frame = rect;
[UIControl commitAnimations];
}
-(BOOL)textFieldShouldReturn:(UITextField *) theTextField {
[theTextField resignFirstResponder];
if (moveViewUp) [self scrollTheView:NO];
return YES;
}
Ich habe Schwierigkeiten herauszufinden, warum die Ansicht nach dem Ausblenden der Tastatur nicht nach unten animiert wird, wenn ich den Hintergrund berühre, um die Tastatur auszublenden.
Noch einmal, jeder Hilfe wird geschätzt.