Keyboardwillshownotification Edge Fall
-
25-10-2019 - |
Frage
Dies ist ein Problem der Operationsreihenfolge
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
[nc addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:nil];
Und dann füge ich einem uitableViewcell ein Textfeld hinzu:
[textField addTarget:self
action:@selector(textFieldBegin:)
forControlEvents:UIControlEventEditingDidBegin];
[cell addSubview:textField];
In TextFieldBinin scrolltorowatIndexpath, um in die zu bearbeitende Zelle zu wechseln.
In der Tastatur -Willshow passe ich den Rahmen der Tabellenansicht an, um die Tastatur zu ermöglichen.
textfieldBegin wird angerufen Vor Keyboardwillshow, Das erste Mal, dass es gezeigt wird, hat es keinen Platz zum Scrollen.
Gibt es eine elequente Möglichkeit, dieses Versehen zu beheben?
Lösung
Sie können die aktuelle Scrollposition während des Beginns in einer Variablen speichern, und dann können Sie in der Tastaturshow-Benachrichtigung in die in dieser Variablen gespeicherte Position neu scrollen.
Ich denke, das würde es Ihnen ermöglichen, Ihre unterschiedlichen Animationen dort zu behalten, wo sie hingehören.
Andere Tipps
Anstatt auf die zu hören UIKeyboardWillShowNotification
Sie können auf die uitextfielddelegate -Methode reagieren textFieldDidBeginEditing:
und Größe ändern/scrollen Sie in dieser Methode, da sie aufgerufen wird nach Die Tastatur wird angezeigt.