2 Stimmen

IPhone-Ansicht wird nach dem Ausblenden der Tastatur nicht zurückgesetzt

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.

0voto

Moshe Punkte 56647

Ändern Sie 'UIControl' in Ihren Animationsanweisungen in 'UIView'.

0voto

Tommy Herbert Punkte 19465

Die Methode textFieldShouldReturn wird nur aufgerufen, wenn Sie die Eingabetaste auf der Tastatur drücken. Um das Verschwinden der Tastatur in allen Fällen zu erfassen, verwenden Sie textFieldDidEndEditing.

Ein weiterer Ansatz besteht darin, sich sowohl für UIKeyboardWillHideNotification als auch für UIKeyboardWillShowNotification zu registrieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X