Ich habe eine Ansicht (ein UITableView
in diesem Fall, aber das ist nicht wichtig) auf meinem UIViewController
, dass die Höhe geändert werden soll, wenn die Tastatur erscheint.
Was ist der beste Weg, dies in Auto Layout zu tun? Zur Zeit habe ich diese Einschränkungen:
Ich denke, der schnellste Weg, dies zu tun, besteht darin, die Beschränkung der Höhe und des unteren Platzes zu entfernen und die tatsächliche Ansicht im Code zu ändern, wenn keyboardDidAppear
notification aufgerufen wird, aber gibt es andere Möglichkeiten?
EDIT: Ich habe die Höhenbeschränkung entfernt, meine schlechte.
Ich würde Ihnen eine generische Idee geben, die möglicherweise für Ihr aktuelles Projekt angepasst werden muss.
Ich glaube, die UITableView *_tableView
wurde irgendwo vorher richtig eingerichtet.
}
HINWEIS: Wenn Ihr UITTableView
nicht genau am unteren Rand des Bildschirms erscheint, sollte der Wert contentInset
verwendet werden in dieser Zeile verfeinert werden: [_tableView setContentInset:UIEdgeInsetsMake(0.f, 0.f, _keyboardFrame.size.height, 0.f)];
Behalte deine Höhenbeschränkung und verbinde eine Steckdose damit:
%Vor%Sehen Sie sich Beispiel 3 von diesem Tutorial an.
Aktualisieren Sie die Höhe Ihrer Ansicht, indem Sie ein Tastaturereignis mit NSNotificationCenter
:
Sie können sich auch die akzeptierte Antwort von diese Frage für einige Inspirationen.
Am Ende sollten Sie so etwas bekommen:
%Vor%Als Erstes sollten Sie keine Oben-Unten-Bedingung und keine Höhenbeschränkung hinzufügen. Wenn sich die Bildschirmgröße ändert, stürzt die App ab (es sei denn, eine der Einschränkungen hat eine niedrigere Priorität, in diesem Fall wird sie entfernt).
Zweitens ändern Sie in Ihrer keyboardDidAppear-Benachrichtigungsmethode einfach den unteren Bereich in den Superview-Konstantenwert und rufen [myView setNeedsDisplay]
Bearbeiten: Nach setFirstResponder wird das SetNeedsDisplay nicht ausgeführt. Sie fügen self
als Beobachter für keyboardWillShow
/ keyboardWillHide
Benachrichtigungen hinzu, und bei dieser Methode aktualisieren Sie die Einschränkung und rufen setNeedsDisplay
auf.
Sehen Sie sich diesen Apple-Beitrag an , Listing 5-1 Handling the keyboard notifications
und Listing 5-2 Additional methods for tracking the active text field
stellen den Code zur Verfügung.
Tags und Links uitableview ios autolayout interface-builder