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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top