iOS AutoLayout mit scrollview und Tastatur
Habe ich einen Blick auf mein storyboard zu zeigen, Benutzer-log-in-Formular, so sieht es wie folgt aus: main view->scrollen Sie Ansicht->Inhalte-Ansicht->zwei text-Felder und die log-in-Schaltfläche an der Oberseite und eine Schaltfläche "registrieren" am unteren Rand der Ansicht. Ich benutze autolayout und unteren Knopf hat unten Platz Zwang. Wenn ich Tippen Sie auf das Textfeld und die Tastatur erscheint, würde ich mag, um einen Bildlauf anzeigen, um die Größe zu ändern, um sichtbar rect, aber der Inhalt Größe bleiben sollte, um nach unten scrollen, um die Schaltfläche "registrieren", aber die Schaltfläche nach oben verschieben, wenn die Größe des scroll-Ansicht ändern. Wie konnte ich machen, was ich will?
Ich diesen code verwenden, wenn die Tastatur angezeigt wird:
- (void)keyboardWillShow:(NSNotification *)aNotification
{
NSDictionary *info = [aNotification userInfo];
NSValue *kbFrame = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
NSTimeInterval animationDuration = [[info objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
CGRect keyboardFrame = [kbFrame CGRectValue];
CGSize s = self.scrollView.contentSize;
CGFloat height = keyboardFrame.size.height;
self.scrollViewBottomLayoutConstraint.constant = height;
[UIView animateWithDuration:animationDuration animations:^{
[self.view layoutIfNeeded];
[self.scrollView setContentSize:s];
}];
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lassen Sie die Größe des Inhalts allein, und stattdessen passen Sie die scroll-Ansicht contentInset Eigenschaft. Dann müssen Sie nicht haben, um Chaos mit Einschränkungen.
Der beste Weg, die ich gefunden habe, ist das überschreiben NSLayoutConstraint etwa so:
dann in Ihrem xib-ändern Sie die Klasse geben für die problematische Einschränkung zu dieser Klasse.