keyboardWillShowNotification cas de bord
-
25-10-2019 - |
Question
Ceci est un problème de l'ordre des opérations
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
[nc addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:nil];
Et puis-je ajouter une zone de texte à un UITableViewCell:
[textField addTarget:self
action:@selector(textFieldBegin:)
forControlEvents:UIControlEventEditingDidBegin];
[cell addSubview:textField];
Dans textFieldBegin, je scrollToRowAtIndexPath pour passer à la cellule en cours de modification.
En keyboardWillShow j'ajuste le cadre du tableView pour permettre le clavier.
textFieldBegin est appelée avant keyboardWillShow , donc la première fois qu'il est démontré qu'il n'a pas de place pour défiler.
Y at-il un moyen de résoudre ce problème elequent contrôle?
La solution
Vous pouvez mémoriser la position de défilement actuelle dans une variable au cours de commencer, puis dans la notification keyboardwillshow vous pouvez re-faire défiler jusqu'à ce que la position est stockée dans cette variable.
Je pense que cela vous permettra de garder vos différentes animations où ils appartiennent.
Autres conseils
Au lieu d'écouter de la UIKeyboardWillShowNotification
vous pouvez réagir à la méthode UITextFieldDelegate textFieldDidBeginEditing:
et Redimensionner / défilement dans cette méthode, car il est appelé après le clavier est affiché.