IOS - /Xcode: Wie Bewegen, Blick nach Oben, wenn die Tastatur erscheint
Gibt es viele Antworten auf diese auf, SO doch die meisten sind Jahre her und keiner scheint Recht zufriedenstellend.
Für einen login-Bildschirm mit nur drei Textfelder und submit-button, ich möchte die Ansicht zu bewegen, wenn die Tastatur erscheint einfach genug, so dass, während das Feld nicht ausgeblendet ist, tut es auch nicht nach oben aus dem Blick. Der Betrag der Bewegung erforderlich ist, dass der submit-button ist ein fester Abstand oberhalb der Tastatur. Es ist zwar möglich, indem Sie die Felder oben auf der Seite, um Platz für die Tastatur, den submit-button ist noch verborgen
Ich habe versucht, gerade das hinzufügen der folgenden:
-(void) viewWillAppear:(BOOL)Animated {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
}
- (void)viewWillDisappear:(BOOL)animated {
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
}
Damit bewegt sich die Sicht, bis ein fester Betrag, aber so viel, so dass die Felder nicht sichtbar sind, für die Bearbeitung, d.h. Sie sind zu hoch.
Anderen Antwort vorgeschlagen:
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
[self animateTextField:textField up:YES];
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
[self animateTextField:textField up:NO];
}
-(void)animateTextField:(UITextField*)textField up:(BOOL)up
{
const int movementDistance = -200; //tweak as needed
const float movementDuration = 0.3f; //tweak as needed
int movement = (up ? movementDistance : -movementDistance);
[UIView beginAnimations: @"animateTextField" context: nil];
[UIView setAnimationBeginsFromCurrentState: YES];
[UIView setAnimationDuration: movementDuration];
self.view.frame = CGRectOffset(self.view.frame, 0, movement);
[UIView commitAnimations];
}
Ich kann nicht herausfinden, wie diese umzusetzen ist. Wenn Sie nur lassen Sie es wie es ist nichts passiert. Ich denke, Sie sollen sich umbenennen textfield-Objekt mit dem Namen Ihres textfield-aber in diesem Fall, würden Sie es tun für jeden von Textfeldern? Ich kann es nicht haben keine Wirkung.
Ein weiterer Vorschlag ist der Einsatz einer Kategorie wie TPKeyboardAvoiding dies erfordert jedoch eine scrollview, die brauche ich nicht in diesem Fall.
Gibt es keine einfache Lösung in 2015 für dieses Problem?
Vielen Dank für alle Vorschläge/Beratung.
InformationsquelleAutor user1904273 | 2015-09-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den folgenden animation wird die Ansicht verschieben (viewForLogin in diesem Fall) 200 Pixel oben, wenn der Benutzer mit der Eingabe beginnt. Die Ansicht animieren, wieder in die ursprüngliche position, wenn das textfield-enden-Bearbeitung. Vergessen Sie nicht, die Delegierten für den Textfeldern.
Swift 3
Objective-C
viewForLogin ist eine Ansicht, enthält Ihre Textfeldern. Es kann selbst.- Ansicht oder einer Untersicht von selbst.Blick. Nur die Delegierten von allen drei Textfeldern und fügen Sie die beiden oben genannten delegate-Methoden. Ändern viewForLogin mit Ihrer jeweiligen Sicht mit Textfeldern und es wird funktionieren.
der view controller ist ein uiviewcontroller und wurde im storyboard. Die Felder mit Sternchen sitzen nur in der VC. Nicht jedes view-controller kommen mit dem eigenen selbst.anzeigen oder wie kann ich wissen, was die Ansicht aufgerufen wird?
Ich habe versucht, es mit sich selbst.Ansicht einschließlich der änderung viewForIpad. Hat keinen Effekt. Andere als, wie zu identifizieren, die Ansicht, wie in sich selbst.anzeigen oder etwas anderes, muss ich dies in einer scrollview? Was sonst könnte ich tun, da es keine Wirkung.
Keine Notwendigkeit der scrollview. Ich habe bearbeitet die Antwort, Sie einfach selbst.Ansicht sollte den job tun. Überprüfen Sie, ob delegate-Methoden aufgerufen werden oder nicht.
InformationsquelleAutor Fawad Masud
SWIFT Liebhaber
Hier gehen Sie. Ich habe diesen code mit UIView, obwohl. Sie sollten in der Lage sein, diese Anpassungen für scrollview.
Vergessen Sie nicht, entfernen die Benachrichtigungen am rechten Ort.
InformationsquelleAutor Mohammad Sadiq
DEVICE_HEIGHT
hier?Pemhiwa bearbeitete ich die Antwort..bitte prüfen..
InformationsquelleAutor KSR