Es ist auf jeden Fall möglich zu verwenden und den Code nur etwa halbiert werden. Im folgenden Beispiel wird Auto Layout für eine Vielzahl von Schwertransporten verwendet.
NSNotificationCenter.defaultCenter().addObserverForName(
UIKeyboardWillChangeFrameNotification,
object: nil,
queue: nil
) { (notification) in
var userInfo = notification.userInfo!
let frameEnd = userInfo[UIKeyboardFrameEndUserInfoKey]!.CGRectValue
let convertedFrameEnd = self.view.convertRect(frameEnd, fromView: nil)
let heightOffset = self.view.bounds.size.height - convertedFrameEnd.origin.y
self.messageFieldBottomConstraint.constant = heightOffset
let curve = userInfo[UIKeyboardAnimationCurveUserInfoKey]!.unsignedIntValue
let options = UIViewAnimationOptions(rawValue: UInt(curve) << 16)
UIView.animateWithDuration(
userInfo[UIKeyboardAnimationDurationUserInfoKey]!.doubleValue,
delay: 0,
options: options,
animations: {
self.view.layoutIfNeeded()
},
completion: nil
)
}
self.messageFieldBottomConstraint
ist ein NSLayoutConstraint
, die die Unterseite meines Textfeld auf den Grund meiner Sicht bindet. Dieser Code animiert das Feld nach oben, wenn die Tastatur angezeigt wird, und nach unten, wenn es ausgeblendet wird.
All dies war möglich in iOS < 8 mit einer Kombination von UIKeyboardWillShowNotification
und UIKeyboardWillHideNotification
. Aber! Wie Sie sagen, führt iOS 8 den Abschnitt QuickType ein, der vom Benutzer reduziert oder erweitert werden kann. Diese Lösung animiert das Textfeld korrekt, so dass es immer an der Spitze der Tastatur hängt, unabhängig davon, ob QuickType geöffnet ist oder nicht.
guten einen. Prost – Fattie
Gibt es eine Möglichkeit zu steuern, wenn es scrollt? Auf dem iPhone 6 brauche ich nicht die Felder zu scrollen, wenn der Benutzer am obersten Textfeld bearbeitet, aber wenn das untere Textfeld bearbeiten, sollte es scrollen, um Platz zu machen. –
Ist die Verwendung von 'UIViewAnimationOptions (UInt (curve)) 'korrekt? Die Dokumentation besagt, dass "curve" eine "UIViewAnimationCurve" ist, und bei Betrachtung der Definitionen scheint dies nicht mit den Werten für "UIViewAnimationOptions" übereinzustimmen. Noch besser ist der 'Kurven'-Wert, der in der Praxis in dieser Benachrichtigung zurückgegeben wird,' 7' - ein privater/undefinierter Wert, so dass eine einfache switch-Anweisung, die zwischen ihnen konvertiert wird, nicht abschneidet ... –