2012-04-04 9 views
1

Im Moment versuche ich eine Funktion zum Hochziehen von Bildern zu schreiben, wenn die Tastatur auf dem Bildschirm erscheint. Ich begann NSNNotificationCenter zu verwenden. Mein Code funktioniert, aber nicht richtig. Wenn die Tastatur angezeigt wird, bewegt sich meine Formularansicht nach oben, aber wenn ich mit der Bearbeitung des nächsten Textfelds in der Formularansicht beginne, bewegt sich die Formularansicht wieder nach oben. Was ist falsch an meinem Code? Danke.NSNotificationCenter

- (void)keyboardWillShow:(NSNotification *) aNotification { 
    NSDictionary *userInfo = [aNotification userInfo]; 

    CGRect frame = self.formView.frame; 
    frame.origin.y -= 170; 

    NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey]; 
    NSTimeInterval animationDuration; 

    [animationDurationValue getValue:&animationDuration]; 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:animationDuration]; 

    formView.frame = frame; 

    [UIView commitAnimations]; 

} 
+2

Sie sollten nicht 170 in diesem Code fest codieren. Sie sollten die Dokumentation lesen, und es wird Ihnen sagen, wie Sie die tatsächliche Größe der Tastatur erhalten können. Auf iOS 5 mit einem iPad kann die Tastatur geteilt werden, daher sollten Sie Ihren Rahmen nicht anpassen. Das ist nur ein Beispiel. Schreiben Sie nie so etwas. –

+0

ok, danke für deinen Kommentar. – nikigx2

Antwort

1

sollten Sie fügen wieder Ihre 170 Pixel (oder was auch immer Sie von Mike wie vorgeschlagen berechnen) an die origin.y Ihrer Ansicht, wenn die Tastatur verschwindet. Wenn Sie auf ein anderes Textfeld klicken, verschwindet die aktuelle Tastatur technisch (Ihre Ansicht reagiert nicht) und eine neue Tastatur erscheint (Ihre keyboardWillShow wird erneut aufgerufen und Sie verschieben die Ansicht erneut um 170 px).

Verwandte Themen