caso limite keyboardWillShowNotification
-
25-10-2019 - |
Domanda
Questo è un problema di ordine delle operazioni
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
[nc addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:nil];
E poi aggiungo una casella di testo a un UITableViewCell:
[textField addTarget:self
action:@selector(textFieldBegin:)
forControlEvents:UIControlEventEditingDidBegin];
[cell addSubview:textField];
In textFieldBegin, ho scrollToRowAtIndexPath per passare alla cella in fase di modifica.
In keyboardWillShow regola la cornice del tableView per consentire alla tastiera.
textFieldBegin viene chiamato prima keyboardWillShow , quindi la prima volta che viene dimostrato che non ha spazio per scorrimento.
C'è un modo per risolvere questo problema elequent svista?
Soluzione
È possibile memorizzare la posizione di scorrimento corrente in una variabile durante l'inizio, poi nella notifica keyboardwillshow si potrebbe ri-scroll a qualsiasi posizione è memorizzato in quella variabile.
Credo che permetterebbe di mantenere le diverse animazioni a cui appartengono.
Altri suggerimenti
Invece di ascoltare per la UIKeyboardWillShowNotification
si può reagire al metodo UITextFieldDelegate textFieldDidBeginEditing:
e ridimensionamento / scorrere in quel metodo, dal momento che è chiamato dopo la tastiera viene mostrato.