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?

Était-ce utile?

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é.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top