Ich habe versucht, Code hinzuzufügen, um meine Ansicht nach oben zu verschieben, wenn die Tastatur angezeigt wird. Ich habe jedoch Probleme beim Versuch, die Objective-C-Beispiele in Swift zu übersetzen. Ich habe einige Fortschritte gemacht, aber ich stecke in einer bestimmten Zeile fest.
Dies sind die beiden Tutorials / Fragen, denen ich gefolgt bin:
So verschieben Sie den Inhalt von UIViewController nach oben, wenn die Tastatur mithilfe von Swift angezeigt wird: http://www.ioscreator.com/tutorials/move-view-when-keyboard-appears
Hier ist der Code, den ich derzeit habe:
override func viewWillAppear(animated: Bool) {
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:", name: UIKeyboardWillHideNotification, object: nil)
}
override func viewWillDisappear(animated: Bool) {
NSNotificationCenter.defaultCenter().removeObserver(self)
}
func keyboardWillShow(notification: NSNotification) {
var keyboardSize = notification.userInfo(valueForKey(UIKeyboardFrameBeginUserInfoKey))
UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0)
let frame = self.budgetEntryView.frame
frame.origin.y = frame.origin.y - keyboardSize
self.budgetEntryView.frame = frame
}
func keyboardWillHide(notification: NSNotification) {
//
}
Im Moment erhalte ich einen Fehler in dieser Zeile:
var keyboardSize = notification.userInfo(valueForKey(UIKeyboardFrameBeginUserInfoKey))
Wenn mir jemand mitteilen könnte, wie diese Codezeile aussehen soll, sollte ich es schaffen, den Rest selbst herauszufinden.
quelle
Für noch weniger Code sollten Sie sich DIESES ansehen
Es war sehr hilfreich für mich. Sie müssen nur die Ansichtsbeschränkung in den Ansichtscontroller aufnehmen und die beiden von Ihnen hinzugefügten Beobachter verwenden. Verwenden Sie dann einfach die folgenden Methoden (hier wird eine Tabellenansicht verschoben)
und
quelle
Wenn Sie ein Storyboard verwenden, anstatt die Ansicht selbst zu bearbeiten, können Sie das automatische Layout nutzen.
(Dies ist eine bereinigte Version von Nicholas 'Antwort)
Richten Sie ein Benachrichtigungscenter ein, um Sie über das Erscheinen und Verschwinden der Tastatur zu informieren:
Und stellen Sie sicher, dass Sie die Beobachter entfernen, wenn Sie sie nicht mehr benötigen:
Legen Sie im Storyboard die unterste Einschränkung fest. Erstellen Sie einen Ausgang für diese Einschränkung:
und legen Sie die Konstanteneigenschaft der Einschränkung fest, wenn die Tastatur angezeigt oder ausgeblendet wird:
Immer wenn die Tastatur erscheint oder verschwindet, kümmert sich das automatische Layout um alles.
quelle
Swift 2
Swift 3
quelle
Dies hat mir geholfen: https://developer.apple.com/library/ios/samplecode/UICatalog/Listings/Swift_UICatalog_TextViewController_swift.html
quelle
Sie können diese eine Zeile für Ihre Zeile verwenden
quelle
Swift 3: UPDATE
quelle
Swift - Tastaturhöhe Von keyboardWillShowNotification
Sie können eine Einschränkung oder einen anderen Wert auf die Größe der Tastatur vergrößern oder verkleinern, indem Sie Daten von der Tastatur verwenden. Benachrichtigungen werden angezeigt / ausgeblendet.
Mit einer Layoutbeschränkung
Dieser minimale Code registriert die Benachrichtigung, dass die Tastatur eine Einschränkung basierend auf ihrer Größe anzeigt und aktualisiert.
Mit einer ScrollView
Auf die gleiche Weise wird der Inhalt einer Bildlaufansicht basierend auf der Tastaturgröße aktualisiert.
quelle
Einzelheiten
Lösung
Verwendung
Vollständige Probe
Ergebnis
Log
quelle
Swift 3.0
Hier ist ein Beispiel für das Abrufen der Tastaturgröße und das Animieren einer Ansicht nach oben. In meinem Fall verschiebe ich eine UIView mit meinen UITextFields nach oben, wenn ein Benutzer mit der Eingabe beginnt, damit er ein Formular ausfüllen und trotzdem die Schaltfläche zum Senden unten sehen kann.
Ich habe der unteren Platzbeschränkung der Ansicht, die ich animieren wollte, einen Ausgang hinzugefügt und den Namen
myViewsBottomSpaceConstraint
:Ich habe dann meiner schnellen Klasse den folgenden Code hinzugefügt:
quelle
Für Xamarin können Sie c # 6 verwenden
c # 7
quelle
In Swift 4.2 können Sie UIResponder.keyboardFrameEndUserInfoKey verwenden
quelle